Go语言自学系列 | golang包管理工具go module
視頻來源:B站《golang入門到項目實戰 [2021最新Go語言教程,沒有廢話,純干貨!持續更新中...]》
一邊學習一邊整理老師的課程內容及試驗筆記,并與大家分享,侵權即刪,謝謝支持!
附上匯總貼:Go語言自學系列 | 匯總_COCOgsta的博客-CSDN博客
Go module簡介
Go modules是golang 1.11新加的特性,用來管理模塊中包的依賴關系。
Go mod使用方法
- 初始化模塊
Go mod init <項目模塊名稱>
- 依賴關系處理,根據go.mod文件
Go mod tidy
- 將依賴包復制到項目的vendor目錄
Go mod vendor
如果報被屏蔽(墻),可以使用這個命令,隨后使用go build -mod=vendor編譯
- 顯示依賴關系
Go list -m all
- 顯示詳細依賴關系
Go list -m -json all
- 下載依賴
Go mod download [path@version]
[path@version]是非必寫的
實例演示
打開終端,在pro02文件夾下輸入go mode init?http://duo360.com/pro02
PS D:\SynologyDrive\軟件開發\go\golang入門到項目實戰\goproject\360duote.com\pro02> go mod init duo360.com/pro02 go: creating new go.mod: module duo360.com/pro02 go: to add module requirements and sums: go mod tidy編輯service/user_service.go
package service import "fmt" // code func TestUserService() { fmt.Println("test user service...") }service目錄執行go build
PS D:\SynologyDrive\軟件開發\go\golang入門到項目實戰\goproject\360duote.com\pro02> cd .\service\ PS D:\SynologyDrive\軟件開發\go\golang入門到項目實戰\goproject\360duote.com\pro02\service> go buildmain.go中引入service這個包
package main import ( "fmt" "duo360.com/pro02/service" ) func main() { fmt.Println("hello world") service.TestUserService() }運行結果
[Running] go run "d:\SynologyDrive\軟件開發\go\golang入門到項目實戰\goproject\360duote.com\pro02\main.go" hello world test user service...編輯customer_service.go
package service import "fmt" func TestCustomerService() { fmt.Println("test customer service...") }編輯完后再編譯一次,產生緩存
PS D:\SynologyDrive\軟件開發\go\golang入門到項目實戰\goproject\360duote.com\pro02\service> go build此時main.go中就可以調用其新增的函數了
package main import ( "fmt" "duo360.com/pro02/service" ) func main() { fmt.Println("hello world") service.TestUserService() service.TestCustomerService() }運行結果
[Running] go run "d:\SynologyDrive\軟件開發\go\golang入門到項目實戰\goproject\360duote.com\pro02\tempCodeRunnerFile.go" hello world test user service... test customer service...導入遠程包,執行 go get -u?http://github.com/gin-gonic/gin?下載
PS D:\SynologyDrive\軟件開發\go\golang入門到項目實戰\goproject\360duote.com\pro02\service> go get -u github.com/gin-gonic/gin go: downloading github.com/ugorji/go v1.2.7 go: downloading github.com/ugorji/go/codec v1.2.7 go: downloading golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9 go: downloading golang.org/x/crypto v0.0.0-20220214200702-86341886e292 go get: added github.com/gin-gonic/gin v1.7.7 go get: added github.com/go-playground/validator/v10 v10.10.0 go get: added github.com/golang/protobuf v1.5.2 go get: added github.com/json-iterator/go v1.1.12 go get: added github.com/mattn/go-isatty v0.0.14 go get: added github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd go get: added github.com/ugorji/go v1.2.7 go get: added golang.org/x/crypto v0.0.0-20220214200702-86341886e292 go get: added golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9 go get: added golang.org/x/text v0.3.7 go get: added google.golang.org/protobuf v1.27.1 go get: added gopkg.in/yaml.v2 v2.4.0修改main.go
package main import ( "github.com/gin-gonic/gin" ) func main() { /* fmt.Println("hello world") service.TestUserService() service.TestCustomerService() */ r := gin.Default() r.GET("/ping", func(c *gin.Context) { c.JSON(200, gin.H{ "message": "pong", }) }) r.Run() // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080") }移動pro02目錄,執行go mod tidy
PS D:\SynologyDrive\軟件開發\go\golang入門到項目實戰\goproject\360duote.com\pro02> go mod tidy go: downloading github.com/stretchr/testify v1.7.0 go: downloading github.com/google/go-cmp v0.5.5 go: downloading gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c go: downloading github.com/kr/pretty v0.3.0 go: downloading gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b go: downloading github.com/rogpeppe/go-internal v1.8.0 go: downloading github.com/kr/text v0.2.0運行后訪問localhost:8080/ping
[Running] go run "d:\SynologyDrive\軟件開發\go\golang入門到項目實戰\goproject\360duote.com\pro02\tempCodeRunnerFile.go" [GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached. [GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production. - using env: export GIN_MODE=release - using code: gin.SetMode(gin.ReleaseMode) [GIN-debug] GET /ping --> main.main.func1 (3 handlers) [GIN-debug] [WARNING] You trusted all proxies, this is NOT safe. We recommend you to set a value. Please check https://pkg.go.dev/github.com/gin-gonic/gin#readme-don-t-trust-all-proxies for details. [GIN-debug] Environment variable PORT is undefined. Using port :8080 by default [GIN-debug] Listening and serving HTTP on :8080 [GIN] 2022/03/05 - 20:36:41 | 404 | 0s | ::1 | GET "/" [GIN] 2022/03/05 - 20:36:41 | 404 | 0s | ::1 | GET "/favicon.ico" [GIN] 2022/03/05 - 20:36:52 | 200 | 465μs | ::1 | GET "/ping"總結
以上是生活随笔為你收集整理的Go语言自学系列 | golang包管理工具go module的全部內容,希望文章能夠幫你解決所遇到的問題。