備注
此文主要是對官方教程的學習總結,官方教程:http://golang.org/doc/code.html。
工作空間(Workspaces)
Go代碼必須保持在一個workspace,workspace是一個目錄結構,他有三個子目錄構成:
- src:包含了組成packages的源代碼,一個目錄就是一個package。
- pkg:包含了package objects(編譯后的類庫)。
- bin:包含了executable commands(編譯后的可執行程序)。
go tool編譯packages,然后將編譯結果安裝到pkg目錄或bin目錄,下面是一個濕示例:
GOPATH環境變量
GOPATH環境變量指向了Workspace的位置,如果沒有設置的話,自己去設置一下,否則go install會執行失敗。
包路徑(Package Path)
標准類庫的packages可以使用短名字,如:fmt。對於你自己的Packages,最好提供一個base path(基路徑),這可以避免命名沖突,下面是我的命名原則:
1 happygo.codeplex.com/study(源代碼服務提供商倉庫/項目)。
你的第一個程序
選擇一個包路徑
1 happygo.codeplex.com/study/hello
hello.go
1 package main //command executable(命令行可執行程序)必須使用main作為package名字。 2 3 import "fmt" 4 5 func main() { 6 fmt.Print("你好,世界!\n") 7 }
項目結構
你的第一個類庫
選擇一個包路徑
1 happygo.codeplex.com/study/hellolib
hellolib.go
1 package hellolib 2 3 func Max(x int, y int) int { 4 if x >= y { 5 return x 6 } 7 8 return y 9 }
修改hello.go,調用類庫
1 package main 2 3 import ( 4 "fmt" 5 "happygo.codeplex.com/study/hellolib" 6 ) 7 8 func main() { 9 fmt.Print("你好,世界!\n") 10 fmt.Printf("2 和 3中最大的是 %d!", hellolib.Max(2, 3)) 11 }
項目結構
注意:Go使用靜態鏈接(會將所依賴的代碼鏈接到一個文件)。
包名字(Package Name)
Go源文件必須以包聲明開始:
1 package name
一些規則:
- 一個package(文件件)中的所有文件必須使用相同的名字。
- Go語言約定import path(導入路徑)的最后一個元素是包名字。
- Executable Commands必須使用 package main。
測試集成
Go提供了 go test 命令和 testing package幫助我們做測試,下面是測試的組織規則:
- 文件必要以 _test.go 結尾。
- 函數名必須包含如下簽名:func TestXXX(t *testing.T)。
hellolib_test.go
1 package hellolib 2 3 import "testing" 4 5 func TestMax(t *testing.T) { 6 const x, y = 2, 3 7 max := Max(x, y) 8 if max == x { 9 t.Error("Max錯誤!") 10 } 11 }
備注
大環境搞明白了,語法就快了,再用一天時間學習一下語法,然后用Google App Engine開發個應用試試。