(一)golang工作區
環境變數介紹
GOROOT:Golang的安裝路徑。
GOPATH:可以理解為工作目錄或者工作區,也是平時接觸最多的一個變數。它可以是一個目錄,可以是多個目錄路徑,每個目錄代表一個工作區。這些目錄用於放置Go語言的原始碼檔案(src),以及安裝(命令go install)後的歸檔檔案(pkg目錄)和可執行檔案(bin目錄)。
GOBIN:GOROOT目錄下的可執行檔案放置目錄,一般指bin。
理解構建和安裝Go的過程
go build命令
go build 有很多種編譯方法,如無引數編譯、檔案列表編譯、指定包編譯等,使用這些方法都可以輸出可執行檔案。
go build 還有一些附加引數,可以顯示更多的編譯資訊和更多的操作,詳見下表所示。
go build編譯時的附加引數 -v編譯時顯示包名 -p n開啟併發編譯,預設情況下該值為 CPU 邏輯核數 -a強制重新構建 -n列印編譯時會用到的所有命令,但不真正執行 -x列印編譯時會用到的所有命令 -race開啟競態檢測
go run 命令
go run 命令會編譯原始碼,並且直接執行原始碼的 main() 函式,不會在當前目錄留下可執行檔案。
工作目錄被設定為當前目錄。在 go run 的後部可以新增引數,這部分引數會作為程式碼可以接受的命令列輸入提供給程式。
go run 不能使用“go run+包”的方式進行編譯,如需快速編譯執行包,需要使用如下步驟來代替:
1、使用 go build 生成可執行檔案。 2、執行可執行檔案。
go install 命令
go install 的功能和 go build 類似,附加引數絕大多數都可以與 go build 通用。go install 只是將編譯的中間檔案放在 GOPATH 的 pkg 目錄下,以及固定地將編譯結果放在 GOPATH 的 bin 目錄下。
go install 的編譯過程有如下規律: go install 是建立在 GOPATH 上的,無法在獨立的目錄裡使用 go install。 GOPATH 下的 bin 目錄放置的是使用 go install 生成的可執行檔案,可執行檔案的名稱來自於編譯時的包名。 go install 輸出目錄始終為 GOPATH 下的 bin 目錄,無法使用-o附加引數進行自定義。 GOPATH 下的 pkg 目錄放置的是編譯期間的中間檔案。
go get命令
go get使用時的附加引數
使用 go get 時可以配合附加引數顯示更多的資訊及實現特殊的下載和安裝操作,詳見下表所示。
go get 使用時的附加引數 附加引數備注 -v顯示操作流程的日誌及資訊,方便檢查錯誤 -u下載丟失的包,但不會更新已經存在的包 -d只下載,不安裝 -insecure允許使用不安全的 HTTP 方式進行下載操作
golang 包命名規則
第一條規則,同目錄下的原始碼檔案的程式碼包宣告語句要一致。也就是說,它們要同屬於一個程式碼包。這對於所有原始碼檔案都是適用的。 第二條規則,原始碼檔案宣告的程式碼包的名稱可以與其所在的目錄的名稱不同。在針對程式碼包進行構建時,生成的結果檔案的主名 稱與其父目錄的名稱一致。(import後面的最後一個元素是路徑,就是目錄,並非包名。)