這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
Go是一門全新的靜態類型開發語言,具有自動記憶體回收,豐富的內建類型,函數多傳回值,錯誤處理,匿名函數,並發編程,反射等特性.
golang安裝
golang下載
sudo tar -zvxf go1.6.2.linux-amd64.tar.gzsudo mv go /usr/local/go#設定環境變數vi /etc/profileexport GOROOT=/usr/local/go #設定為go安裝的路徑export GOPATH=$HOME/gocode #預設安裝包的路徑export PATH=$PATH:$GOROOT/bin:$GOPATH/binsource /etc/profile
GOPATH設定
go命令依賴一個重要的環境變數:$GOPATH
GOPATH允許多個目錄,當有多個目錄時,請注意分隔字元,多個目錄的時候Windows是分號;,Linux系統是冒號:
當有多個GOPATH時預設將go get擷取的包存放在第一個目錄下
$GOPATH目錄約定有三個子目錄
src存放原始碼(比如:.go .c .h .s等)
pkg編譯時間產生的中間檔案(比如:.a)
bin編譯後產生的可執行檔(為了方便,可以把此目錄加入到 $PATH 變數中,如果有多個gopath,那麼使用${GOPATH//://bin:}/bin添加所有的bin目錄)
代碼目錄結構規劃
GOPATH下的src目錄就是接下來開發程式的主要目錄,所有的源碼都是放在這個目錄下面,那麼一般我們的做法就是一個目錄一個項目,例如: $GOPATH/src/mymath 表示mymath這個應用程式套件或者可執行應用,這個根據package是main還是其他來決定,main的話就是可執行應用,其他的話就是應用程式套件,這個會在後續詳細介紹package。
下面我就以mymath為例來講述如何編寫應用程式套件,執行如下代碼
建立一個自己golang代碼的路徑myGolang
export GOPATH=$HOME/gocode:$HOME/myGolangexport PATH=$PATH:$GOROOT/bin:${GOPATH//://bin:}/bin
cd $GOPATH/srcmkdir mymath
建立檔案fabnacci.go
package mymathfunc Fabnacci(num int) int { if num == 0 || num == 1 { return num } return Fabnacci(num -1) + Fabnacci(num -2)}
編譯應用
上面我們已經建立了自己的應用程式套件,如何進行編譯安裝呢?有兩種方式可以進行安裝
- 進入對於的安裝包目錄,然後執行
go install
- 在任意的目錄下指定需要編譯的包
go build mymath
編譯後可以在$GOPATH/pkg/${GOOS}_${GOARCH}下看到mymath.a檔案
.a檔案是應用程式套件,那麼我們如何進行調用呢?
接下來我們建立一個應用程式來調用這個應用程式套件
cd $GOPATH/srcmkdir mathapp
建立Fabnacci.go檔案
package mainimport ( "mymath" "fmt" "os" "strconv")func main() { if len(os.Args) < 2 { fmt.Println("input number") return } num, err := strconv.Atoi(os.Args[1]) if err != nil { fmt.Println("input must be number", err) return } fmt.Println("Fabnacci :", num, mymath.Fabnacci(num))}
如何編譯器呢?進入該應用目錄,然後執行go build,在該目錄下會產生mathapp可執行檔
time ./mathapp 45Fabnacci : 45 1134903170real 0m10.836suser 0m10.208ssys 0m0.032s
如何安裝應用程式?進入該目錄執行go install,那麼會在$GOPATH/bin/增加一個可執行檔mathapp
$GOPATH/bin/目錄已經加入了環境變數,可以直接運行mathapp
參照: