8、測試Go內建了一個輕量級的測試架構,由go test和testing包組成。
可以通過建立xx_test.go寫一個測試,其中包含若干個TestXXX函數。測試架構會自動執行這些函數;如果函數中包含tError或t.Fail, 對應的測試會被判為失敗。
添加一個針對stringutil的測試檔案$GOPATH/src/github.com/user/stringutil/reverse_test.go,包含以下內容:
package stringutilimport "testing"func TestReverse(t *testing.T) {cases := []struct {in, want string}{{"Hello, world", "dlrow ,olleH"},{"Hello, 世界", "界世,olleH"},{"", ""},}for _, c := range cases {got := Reverse(c.in)if got != c.want {t.Errorf("Reverse(%q) == %q, want %q", c.in, got, c.want)}}}#通過go test測試
# go test github.com/user/stringutilok github.com/user/stringutil 0.002s
#同樣的,在包檔案夾下可以忽略路徑而直接執行go test
[root@zabbix stringutil]# go testPASSok github.com/user/stringutil 0.002s
9、遠程包包的引用路徑用來描述如何通過版本控制系統擷取包的原始碼。go工具通過引用路徑自動從遠程代碼倉庫擷取包檔案。比如本文中用的例子也對應的儲存在github.com/golang/example下。go可以通過包的代碼倉庫的url直接擷取、產生、安裝對應的包。
[root@zabbix ~]# go get github.com/golang/example/hello[root@zabbix ~]# $GOPATH/bin/helloHello, Go examples!
如果工作區中不存在對應的包,go會將對應的包放到GOPATH環境變數指明的工作區下。(如果包已經存在,go跳過代碼拉去而直接執行go install)
執行上邊的go get命令後,工作空間檔案夾下是這樣的結果:
github上的hello命令依賴於同個倉庫下的stringutil庫,hello.go使用同樣的路徑進行匯入,所以go get命令能夠直接找到並安裝對應的依賴包。
import "github.com/golang/example/stringutil"
#通過這種方式共用Go包最好。
#註:關於go工具遠程包的更多資訊,參考:https://golang.org/cmd/go/#hdr-Remote_import_paths
10、官方地址Go高效編程:https://golang.org/doc/effective_go.html
Go編程執行個體:https://tour.golang.org/welcome/
本文轉載地址:http://www.linuxprobe.com/set-go-env.html