首頁 >後端開發 >Golang >Go Modules使用詳解

Go Modules使用詳解

尚
轉載
2020-01-04 16:59:562395瀏覽

Go Modules使用詳解

Go Modules 介紹

Modules是Go 1.11中新增的實驗性功能,基於vgo演進而來,是新型的套件管理工具。

Go 1.11 之前的套件管理工具都是基於PATH或vendor目錄,不能很好的解決不同版本依賴問題。 Modules是在GOPATH之外一套新的套件管理方式。使用Modules可以完全不依賴GOPATH。

注意:Go Modules 需要Go 1.11以上版本

使用指南

Example

1、在GOPATH之外建立一個目錄

$ mkdir -p /tmp/scratchpad/hello
$ cd /tmp/scratchpad/hello

2、初始化Module

$ go mod init github.com/you/hello
go: creating new go.mod: module github.com/you/hello

3、編輯hello.go

package main
import (
    "fmt"
    "rsc.io/quote"
)
func main() {
    fmt.Println(quote.Hello())
}

4、編譯並執行

$ go build
$ ./hello
Hello, world.

注意: go build 會自動下載依賴包,而golang .org/x/...之類的套件需要翻牆,可以加入GOPROXY環境變數設定代理:

export GOPROXY=https://goproxy.io

此時,go.mod檔會自動更新,它包含專案所需的依賴項和對應版本號

$ cat go.mod
module github.com/you/hello
require rsc.io/quote v1.5.2

除了go.mod之外,go還維護一個名為go.sum的文件,其中包含特定模組版本的預期雜湊值:

cat go.sum
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c h1:qgOY6WgZOaTkIIMiVjBQcw93ERBE4m30iBm00nkL0i8=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
rsc.io/quote v1.5.2 h1:w5fcysjrx7yqtD/aO+QwRjYZOKnaM9Uh2b40tElTs3Y=
rsc.io/quote v1.5.2/go.mod h1:LzX7hefJvL54yjefDEDHNONDjII0t9xZLPXsUe+TKr0=
rsc.io/sampler v1.3.0 h1:7uVkIFmeBqHfdjD+gZwtXXI+RODJ2Wc4O7MPEh/QiW4=
rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=

go使用go.sum檔案確保這些模組的未來下載與第一次下載相同,以此確保專案所依賴的模組不會出現意外變更。
go.mod和go.sum都應檢入版本控制。

日常WorkFlow

典型的日常工作流程可能是:

根據需要在.go程式碼中加入import語句

標準指令(如go build或go test)會根據需要自動新增新的依賴項(更新go.mod並下載新的依賴項)

需要特定版本的時候,可以使用go get指定特定版本如go get foo@v1.2.3, go get foo@master, go get foo@e3702bed2,或直接編輯go.mod檔案

常用的指令:

go list -m all 查看專案中所有直接和間接依賴關係

go mod tidy 清除未使用的依賴項,並添加其他所需依賴項

go mod vendor 將依賴複製到vendor目錄下

更多go語言知識請關注PHP中文網go語言教學欄位。

以上是Go Modules使用詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除