# 1.5 運行go代碼
現在,讓我們通過創建一個簡單的示例,開啟我們的go學習旅程,并學習如何編譯和執行go程序。打開你最喜歡的文本編輯器,輸入以下代
```go
package main
func main() {
println("it's over 9000!")
}
```
將文件保存為`main.go`,對于簡單的例子,我們不需要深入到go的工作空間中。
接下來,打開一個命令行終端,進入`main.go`文件所在的目錄。對我來說,我是輸入了`cd ~/code`。
最后,鍵入以下命令運行這段程序:
`go run main.go`
如果程序正常運行,你應該會看到輸出`it's over 9000!`。
但這是如何實現編譯呢?為了方便起見,`go run`會先編譯然后再運行你的代碼,它會在一個臨時的目錄下編譯這段代碼,然后執行,最后自動清除生成的臨時文件。通過運行以下命令你可以看見這個臨時文件的位置:
`go run --work main.go`
如果你只想編譯代碼,使用`go build`:
`go build main.go`
這會生成一個可執行文件`main`,你可以直接運行它。在linux/osx中,不要忘記在可執行文件前面加上點和反斜杠,所以你需要輸入`./main`運行程序。
## 1.5.1 main
希望你能理解我們剛剛執行的代碼,我們定義了一個函數,并調用了內置函數`println`輸出一個字符串。難道僅因為這里只有一個選擇,所以`go run`知道執行什么嗎?不是的,在go語言中,程序的入口是`main`包中的`main`函數。
我們在后面的章節中會專門介紹包的相關內容,現在,我們暫時專注于理解go語言的基礎知識,所以我們一直在`main`包中編寫代碼。
如果你愿意,你也可以改變代碼并改變包的名字,并使用`go run`去執行,你會得到一個錯誤信息。然后,將包名改成`main`,但是函數名不叫`main`,再次運行代碼,你會得到一個不同的錯誤信息。使用`go build`進行相同的操作,注意編譯代碼時,這里沒有運行代碼的入口點。這是很正常的,例如當你編譯一個庫時。
## 鏈接
- 關于本書
- 引言
- 準備工作
- 安裝開發環境
- 開始使用Go
- 創建一個Go模塊
- 第1章:基礎知識
- 1.1 編譯
- 1.2 靜態類型
- 1.3 類c語法
- 1.4 垃圾回收
- 1.5 運行go代碼
- 1.6 導入包
- 1.7 變量和聲明
- 1.8 函數聲明
- 1.9 繼續之前
- 第2章:語法學習
- 2.1 聲明和初始化
- 2.2 結構體上的函數
- 2.3 構造函數
- 2.4 new
- 2.5 結構體字段
- 2.6 組合
- 2.7 指針類型和值類型
- 2.8 繼續之前
- 第3章:復雜類型
- 3.1 數組
- 3.2 切片
- 3.3 映射
- 3.4 指針類型和值類型
- 3.5 繼續之前
- 第4章:面向對象
- 4.1 包
- 4.2 接口
- 4.3 繼續之前
- 第5章:綜合知識
- 5.1 錯誤處理
- 5.2 defer
- 5.3 go語言風格
- 5.4 初始化的if
- 5.5 空接口和轉換
- 5.6 字符串和字節數組
- 5.7 函數類型
- 5.8 內存分配
- 第6章:高并發
- 6.1 go協程
- 6.2 同步
- 6.3 通道
- 6.4 繼續之前
- 第7章:工具庫
- 7.1 類型轉換
- 7.2 時間操作
- 第8章:程序測試
- 單元測試
- 性能測試
- 第9章:簡單實例
- 內存分配
- 第10章:項目實戰
- 結論
- 附錄