天天看點

[系列] 使用 go modules 包管理工具(一)

目錄

  • 概述
  • 初始化
  • 添加依賴包
  • go mod 指令
  • 小結
  • 源碼位址

我想實作一個開箱即用的 API 架構的輪子,這個輪子是基于 Gin 基礎上開發的。

為什麼是開箱即用,它會內建哪些功能?

[系列] 使用 go modules 包管理工具(一)

以上功能點,都是常用的,後期可能還會增加。

廢話不多說,咱們開始吧。

建立一個項目,咱們首先要考慮一個依賴包的管理工具。

常見的包管理有,dep、go vendor、glide、go modules 等。

最開始,使用過 dep,當時被朋友 diss 了,推薦我使用 go modules 。

現在來說一下 go modules ,這個是随着 Go 1.11 的釋出和我們見面的,這是官方提倡的新的包管理。

說一個環境變量:GO111MODULE,預設值為 auto 。

當項目中有 go.mod 時,使用 go modules 管理,反之使用 舊的 GOPATH 和 vendor機制。

如果就想使用 go modules ,可以将 GO111MODULE 設定為 on 。

直接上手吧。

咱們在 GOPATH 之外的地方,建立一個空檔案夾

go-gin-api

cd go-gin-api && go mod init go-gin-api
           

輸出:

go: creating new go.mod: module go-gin-api

這時目錄中多一個 go.mod 檔案,内容如下:

module go-gin-api

go 1.12
           

到這,go mod 初始化就完成,接下來添加依賴包 - 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
}
           

這代碼沒什麼特别的,就是官方的入門Demo。

接下來,開始下載下傳依賴包。

go mod tidy
           

執行完成後,看一下

go.mod

檔案:

module go-gin-api

go 1.12

require github.com/gin-gonic/gin v1.4.0
           

這時,看到新增一個 gin v1.4.0 的包。

還生成了一個 go.sum 的檔案,這個檔案可以暫時先不管。

這時發現了 2 個問題。

1、目錄中沒發現 gin 包,包下載下傳到哪了?

下載下傳到了 GOPATH/pkg/mod 目錄中。

2、GoLand 編輯器中關于 Gin 的引用變紅了?

在這裡編輯器需要設定一下,如圖:

[系列] 使用 go modules 包管理工具(一)

點選 Apply 和 OK 即可。

如果這招不靈,還可以執行:

go mod vendor
           

這個指令是将項目依賴的包,放到項目的 vendor 目錄中,這肯定就可以了。

go mod tidy

拉取缺少的子產品,移除不用的子產品。

我常用這個指令。

go mod vendor

将依賴複制到vendor下。

go mod download

下載下傳依賴包。

go mod verify

檢驗依賴。

go mod graph

列印子產品依賴圖。

其他指令,可以執行

go mod

,檢視即可。

這篇文章,分享了 go modules 的使用。

  • 使用 go modules 從零搭建一個項目。
  • GoLand 編輯器使用 go modules。

今天就到這了,下一篇文章開始搭建 API 項目了,寫參數驗證。

https://github.com/xinliangnote/go-gin-api

[系列] 使用 go modules 包管理工具(一)

作者:新亮筆記(關注公衆号,可申請添加微信好友)

出處:https://www.cnblogs.com/xinliangcoder

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。