關於Go Modules的一些內容


安裝

配置環境

啟用Go Modules

go modGo >= 1.13才默認啟用,在Go >= 1.11已經開始支持了go mod

設置環境變量

# 啟用go module
export GO111MODULE=on

# 設置GOPATH,開啟go mod之后,這個目錄主要用來存放依賴包
export GOPATH=~/go_modules

# 設置go代理,在運行go test/build等時會自動下載依賴
# 使用go get下載依賴需要在GOPATH中執行才會使用代理
export GOPROXY=https://goproxy.io

go mod使用

$GOPATH/src之外的任意目錄創建一個目錄,

mkdir -p /home/gopher/project
cd /home/gopher/project

這個目錄就是你項目的根目錄,在目錄中創建mod管理文件

go mod init project

如果你這個項目是放在github上的,那么在創建文件的時候可以這樣寫,project為你github項目名稱

go mod init github.com/YourName/project

go.mod的初始內容cat go.mod為:

module project

go 1.12

go.mod只需要在項目的根目錄創建一次即可,在項目中Go會自動查找當前目錄的全部父級目錄,直到找到go.mod

關於包的定義和自定義包的導入

  • 一個目錄下只能由一個定義的package

    比如在project項目中有了一個hello.go的文件,文中定義了package hello,
    這樣,當你再在project中創建了一個world.go的文件,其中定義了package world會報錯,無法加載package
    
  • 每個package定義,位於一個目錄中。推薦目錄名和package定義的包名字相同。

    project
    ├── go.mod
    ├── hello
    │   ├── hello.go
    │   └── hello1.go
    ├── main.go
    └── world
        ├── world.go
        └── world1.go
    
    其中hello目錄中所有文件的包定義均為package hello,hello目錄中所有文件的包定義均為package world
    

go mod管理

  • 創建新的模塊

    # 創建了一個新的模塊,初始化 `go.mod` 文件並且生成相應的描述
    go mod init
    
  • 添加依賴項

    # build,test和其它構建代碼包的命令,會在需要的時候在go.mod文件中添加新的依賴項
    # 最好不要自己修改go.mod文件,因為在Go在向go.mod中添加依賴項的時候
    # 同時會向go.sum中的hash對比,確定依賴是否修改。
    go build
    go test
    
  • 查看當前全部依賴項

    # 列出了當前模塊所有的依賴項
    go list -m all
    
  • 修改指定依賴項的版本(或添加一個新的依賴項)

    # 修改或添加
    # go get -u 會更新依賴
    # 獲取指定版本的形式 go get rsc.io/sampler@v1.3.1
    go get
    
  • 移除無用的依賴項

    go mod tidy
    


免責聲明!

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



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