這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
GOPATH 和 workspace
go語言的核心原則是保持簡單,在項目構造 方面,原始碼 和 和 構建指令碼是 放在一起的,結構是固定的,就像maven那樣。
先在path後多加一個 go(下載解壓後的go包)的bin,使你可以自由使用go的命令
GOPATH 的系統內容變數,和ava_home 對於 java 不一樣,目的是為了讓go的命令和其它相關工具找到go的workspace
GOPATH d:\home\user\ext;d:\home\user\mygo
可以有多個,分號分開。unix中冒號分開。
每個workspace的結構
src
contains Go source files,
pkg
contains compiled package objects, and
bin
contains executable commands
建立這三個檔案夾。
然後就可以再src下 寫 go的源檔案了,
命令然後再 執行 go install 命令
對於sqrt.go檔案 它的檔案路徑是D:\workspacego\src\example\newmath
D:\workspacego 是 gopath
src 是源碼目錄
example算是項目名
newmath 這是代碼中 package的包聲明
package newmath
// Sqrt returns an approximation to the square root of x.
func Sqrt(x float64) float64 {
// This is a terrible implementation.
// Real code should import "math" and use math.Sqrt.
z := 0.0
for i := 0; i < 1000; i++ {
z -= (z*z - x) / (2 * x)
}
return z
}
而另外一個檔案hello.go D:\workspacego\src\example\hello
它的package是 main 代表了 他的 main函數是這個project的入口
不像上邊的package要與檔案目錄名儲存一致,如果是main則是 檔案名稱與目錄名儲存一致
它會被轉換為一個執行命令
package main
import (
"example/newmath"
"fmt"
)
func main() {
fmt.Printf("Hello, world. Sqrt(2) = %v\n", newmath.Sqrt(2))
}
go install example/hello
編譯 安裝命令
bin/ hello # command executablepkg/ linux_amd64/ example/ newmath.a # package objectsrc/ example/ hello/ hello.go # command source newmath/ sqrt.go # package source
bin下會產生一個執行命令,在window下是hello.exe