# 第一支程式 ## Hello World 新增一個 `.go` 格式的檔案,並複製貼上以下代碼: ```go package main import "fmt" func main() { fmt.Println("Hello World") } ``` 這段代碼會output出 Hello World 字樣。 ![](https://i.imgur.com/PU4jdZa.png) Go語言原生支持Unicode標準,所以你可以用Go語言處理世界上的任何自然語言。 現在稍微解釋一下這段代碼的意思。 ### Package(包) 程式碼的目錄,可以重複利用程式的方案,方便維護。Go默認提供很多package,ex:fmt、is…等,開發者也可以創建自己的package。 **package要求所有檔案的第一行添加package名稱,標示該文件所歸屬的package。** ```go= package main //package main表示一個可獨立執行的程序,每個 Go 應用程序都包含一個名為 main 的包。 ``` 關於package的部分後續會有更詳細的介紹,這邊簡短帶過。 ### 套件 第六行是使用了fmt套件的Printf函式來打印字串,因此我們需要先在第三行匯入 fmt 套件 ```go= import "fmt" ``` 呼叫套件裡的函式是透過 `packageName.funcName` 來呼叫的。 fmt使用與C的printf和scanf類似,但更簡單。 官方文檔:https://golang.org/pkg/fmt/ ### func (函式) 第五行 `func main(){ //code }` 是透過關鍵字 func 定義了一個 main 函式,函式體被放在{ } 之中,與C,C++,JAVA…等程式語言用法近乎相同。 main 函數是每一個可執行程序所必須包含的,一般來說都是在啟動後第一個執行的函數 ## 運行程序 ### go run 通過go底下的run子命令來將 以`.go`結尾的源文件 和 關聯庫 連結到一起,運行最終的可執行文件。 ```go= $ go run fileName.go Hello World ``` ### go build 如果你希望自己的程序能重複運行,那麽就需要去編譯這個程序,並且能夠將編譯結果保存下來以備將來之用。這個可以用build子命令來實現: ```go= $ go build fileName.go $ ./fileName Hello World ``` 這會創建一個名爲 fileName 的可執行的二進制檔案(在Windows系統下生成的是.exe執行檔),之後你可以在任何時間去運行這個二進制文件,不需要其它的任何處理。 ## 注意事項 1.要特別特別注意的是,在Go語言中 `{` **不能**獨立一行,會報錯。 ```go= // 1 正確寫法 func printHello() { //Code } // 2 錯誤寫法 { 單獨一行 func printHello() { //Code } ``` 2.Go語言中不需要在每一個語句後面加上 `;` 分號,Go編譯器會自動完成。如果要將多個語句寫在同一行才需要使用 `;` 作為區分,但實際開發中並不建議這樣寫。 3.每個package中只能有一個 `main()` 函數,否則會報 `main redeclared in this block previous declaration at ..` 的錯誤。