前面的章節可以建議使用線上IDE進行練習與熟悉。
線上 Go IDE的網址在下方
無論是從終端機touch或是用goland新增,請產生一個名為hello.go的檔案並輸入以下內容:
package main
import "fmt"
func main() {
fmt.Println("Hello World")
}
對於簡短的程式碼,可用go run指令執行!
go run hello.go
Hello World
較為複雜的程式碼,則需要先進行指令編譯成執行檔在執行:
go build hello.go
$ ./hello
Hello World
我們再重新看一次程式碼,並配合註解服用:
// Set current package
package main
// Import some package
import "fmt"
// Enter main function
func main() {
// Print out string "Hello World" on stand output.
fmt.Println("Hello World")
}
下方我們將原本的 Hello World 程式改寫如下:
// Set current package
package main
// Import some package
import "fmt"
// Enter main function
func main() {
sayHello()
}
// Write down Hello World function
func sayHello() {
// Print out string "Hello World" on stand output.
fmt.Println("Hello World")
}
我們找到Println的說明(command + 左鍵點選指定函式),可以看到Println的公開介面如下:
func Println(a ...interface{}) (n int, err error) {
return Fprintln(os.Stdout, a...)
}
由這個公開界面可知,Println
接收任意數量的參數,參數為任意型別 (interface{})。該函式會回傳兩個參數,分別是整數 n
和 err 物件
。n
表示寫入的字串長度而 err
回傳錯誤物件,當程式沒有發生錯誤時,err
為空值nil。
我們的範例程式中,我們知道程式不會發生錯誤,而且也不需要知道字串的長度,故我們忽略程式的回傳值。
專案(Project)
可以由N個包(Package)
組成包(Package)
可以有N支程式(.go file)
包(Package)
底下的程式(.go file)
彼此全域變數及函式可以互見,就像在同一支程式裡一樣包(Package)
的名稱 為包所在的資料夾名稱
程式(.go fle)
只能屬於一個包(Package)
程式(.go fle)
可以有多個變數、函式(function)
程式(.go file)
的名稱 不一定要等同於資料夾或包(Package)
的名稱主程式(package main)
主程式(package main)
代表我們可以主動 go run 執行
這包程式package main
func main()
func main(){}
就是執行專案時程式的進入點簡單來說,他們的階層關係為
Project(專案) > Package(程式包) > .go file(程式檔) > Function(函式)
然後他們也有公認的命名方式:
GOROOT
放的是安裝的go語言、官方內建的函式庫。
例如經常使用到的fmt就是放在此
import "fmt"
GOPATH
則是放別人開發的第三方套件、以及自己的程式碼
import "github.com...(別人的repository)"
這兩點應該前個章節已經提及,但因為頗為重要所以在提醒一次。
照慣例通常會把自己寫的專案及程式放入GOPATH底下的**src(source)**資料夾裡,如果有用Github會再多一層 github.com 及 account。
以上的分法都通常是在較久遠的年代,透過glide或dep來管理。自從Go 1.11 推出了gomod後,就不一定要把專案放到GOPATH底下,也可以正常運行但這邊還是偏向使用GOPATH及glide套件管理工具
使用者目錄 (C:\Users\USER 或 ~/)
- Go (GOPATH
) 如果底下沒有bin/pkg/src
目錄,別擔心,自己新增一個
- bin (放編譯過後的可執行檔案 二進制檔案)
- pkg (放編譯過後的library)
- src (放原始碼 Source Code)
- [github.com](http://github.com/)
- Jack (使用者名稱)
-JackProject (專案名稱)
- main.go (主程式)
- Tom
-TomProject
- core (函式庫名稱)
- core.go
- libs (函式庫名稱)
- lib.go
- main.go
- [gitlab.com](http://gitlab.com/)
這章節主要讓大家撰寫第一個Go Application,並告訴大家程式擺放的目錄架構、基本Go程式的知識點等,在下個章節則會帶大家進入變數
的世界。