windows環境下go module的使用和goland配置

鍾哥哥實在帥發表於2020-12-21

Golang學習之路 連載一 Windows使用go mod命令及Goland配置

tips:

一、安裝Golang

二、Golang專案目錄結構

  1. 使用GOPATH專案目錄配置
    __
      |_ bin  # 編譯後生成的可執行檔案
      |_ pkg  # 編譯後生成的檔案
      |_ src  # 程式碼資料夾
        |_ tets_go_mod
    
  2. 使用go mod管理目錄配置
    __
      |_ tets_go_mod  # 存放原始碼
    

三、go mod命令解釋

命令含義
go mod download下載依賴的module到本地cache
go mod edit編輯go.mod檔案
go mod graph列印模組依賴圖
go mod init當前資料夾下初始化一個新的module, 建立go.mod檔案
go mod vendor將依賴複製到vendor下
go mod tidy增加丟失的module,去掉未用的module
go mod verify校驗依賴
go mod why解釋為什麼需要依賴

四、go mod命令初始化一個專案

  1. 新建專案目錄mkdir test_go_mod並進入到專案目錄cd test_go_mod

  2. 開啟module功能,執行命令set GO111MODULE=on

  3. 初始化專案module,執行命令go mod init test_go_mod

     tets_go_mod  # 程式碼資料夾
       |_ go.mod
    
  4. 新建go檔案main.go

    // main.go
     package main
    
     import "fmt"
    
     func main()  {
       fmt.Println("test_go_mod")
     }
    

    資料夾結構

     __
      |_ tets_go_mod  # 程式碼資料夾
          |_ go.mod
          |_ main.go
    
  5. 執行go run main.go,控制檯輸出test_go_mod

  6. 下載依賴,本文使用gin演示,go get -u github.com/gin-gonic/gin,修改main.go內容。

     package main
    
     import (
       "github.com/gin-gonic/gin"
     )
    
     func main() {
       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
     }
    

    資料夾結構

     __
      |_ tets_go_mod  # 程式碼資料夾
          |_ go.mod
          |_ go.sum
          |_ main.go
    
  7. 執行go run main.go

    • 報錯build command-line-arguments: cannot load github.com/gin-gonic/gin: open xxx: The system cannot find the path specified
    • 需要先執行go mod vendor,將依賴複製到vendor下
    • 執行go run main.go,訪問http://localhost:8080/ping,返回{"message":"pong"}

五、使用代理,解決某些包被牆

上述第六步下載包的時候,可能會出現某些依賴包無法下載的情況,被牆了。因此,網上主要有兩種解決方法,一個是去github克隆下載包到指定的位置,另外一直就是使用代理。本文使用代理解決包無法下載的問題,具體解決方法如下:

  1. golang的版本要大於等於1.11
  2. 使用https://goproxy.io/代理golang包下載。
  3. 下載包之前開啟set GO111MODULE=on,設定代理set GOPROXY=https://goproxy.io
  4. 下載包即可,如果還是不行,建議重新安裝最新版本的golang或者使用克隆的庫的方法

六、完整流程及Goland配置

  • 完整流程

    1. 新建專案目錄並進入開啟shell
    2. set GO111MODULE=on
    3. set GOPROXY=https://goproxy.io
    4. go mod init test_go_mod
    5. go get -u github.com/gin-gonic/gin
    6. 編寫main.go檔案
      package main
      
      import (
        "github.com/gin-gonic/gin"
      )
      
      func main() {
        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
      }
      
    7. go mod vendor
    8. go run main.go
  • Goland配置

    1. 找到 選單欄 -> File-> Settings -> Go -> Go Modules(vgo) 選項
    2. 開啟 Enable Go Modules(vgo) integration
    3. 開啟 Vendoring mode
    4. 最後點選 apply 即可

總結

  • 解決golang某些包無法下載問題
  • Goland啟用go module配置

相關文章