Go:如何組織代碼


備注

此文主要是對官方教程的學習總結,官方教程:http://golang.org/doc/code.html

工作空間(Workspaces)

Go代碼必須保持在一個workspace,workspace是一個目錄結構,他有三個子目錄構成:

  1. src:包含了組成packages的源代碼,一個目錄就是一個package。
  2. pkg:包含了package objects(編譯后的類庫)。
  3. 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

一些規則:

  1. 一個package(文件件)中的所有文件必須使用相同的名字。
  2. Go語言約定import path(導入路徑)的最后一個元素是包名字。
  3. Executable Commands必須使用 package main。

測試集成

Go提供了 go test 命令和 testing package幫助我們做測試,下面是測試的組織規則:

  1. 文件必要以 _test.go 結尾。
  2. 函數名必須包含如下簽名: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開發個應用試試。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM