go語言使用
1. 環境變數
GO111MODULE=auto
2.在當前目錄下執行 命令列執行 go mod init + 模組名稱 初始化模組
go mod init hello
會在當前專案目錄下生成一個go.mod 檔案,這是一個關鍵檔案,之後的包的管理都是通過這個檔案管理。
官方說明:除了go.mod之外,go命令還維護一個名為go.sum的檔案,其中包含特定模組版本內容的預期加密雜湊
go.mod和go.sum都應檢入版本控制。go.sum 不需要手工維護,所以可以不用太關注
注意:子目錄裡是不需要init的,所有的子目錄裡的依賴都會組織在根目錄的go.mod檔案裡
3.引入並使用需要的包 比如:import "github.com/astaxie/beego"
按照過去的做法,要執行hello.go需要執行go get 命令 下載beego包到 $GOPATH/src
現在 執行執行 go run hello.go
稍等片刻… go 會自動查詢程式碼中的包,下載依賴包,並且把具體的依賴關係和版本寫入到go.mod和go.sum檔案中。
4.依賴的包下載到哪裡了?還在GOPATH裡嗎?
使用Go的包管理方式,依賴的第三方包被下載到了$GOPATH/pkg/mod路徑下
5.依賴包的版本是怎麼控制的?
可以看到最終下載在$GOPATH/pkg/mod 下的包
在go.mod中沒有指定,go命令會自動下載程式碼中的依賴的最新版本
在go.mod用require語句指定包和版本 ,go命令會根據指定的路徑和版本下載包,
指定版本時可以用latest,這樣它會自動下載指定包的最新版本;
釋出者標記的版本號,格式為 vn.n.n (n代表數字
如果包的作者還沒有標記版本,預設為 v0.0.0
6.以把專案放在$GOPATH/src下嗎?
但是go會根據GO111MODULE的值而採取不同的處理方式
預設情況下,GO111MODULE=auto 自動模式
auto 自動模式下,專案在$GOPATH/src裡會使用$GOPATH/src的依賴包,
在$GOPATH/src外,就使用go.mod 裡 require的包
on 開啟模式,1.12後,無論在$GOPATH/src裡還是在外面,都會使用go.mod 裡 require的包
off 關閉模式,就是老規矩。
7.依賴包中的地址失效了怎麼辦?
以前的做法:
修改原始碼,用新路徑替換import的地址
git clone 或 go get 新包後,copy到$GOPATH/src裡舊的路徑下無論什麼方法,都不便於維護,特別是多人協同開發時。
使用go.mod就簡單了:
在go.mod檔案裡用 replace 替換包:比如:
replace golang.org/x/text => github.com/golang/text latest
go會用 http://github.com/golang/text 替代http://golang.org/x/text,
原理就是下載http://github.com/golang/text 的最新版本到 $GOPATH/pkg/mod/golang.org/x/text下
8.init生成的go.mod的模組名稱有什麼用
因為我們的專案已經不在$GOPATH/src裡了,那麼引用自己怎麼辦?就用模組名+路徑
例如,在專案下新建目錄 utils,建立一個tools.go檔案:
//tools.go
package utils
import “fmt”
func PrintText(text string) {
fmt.Println(text)
}
//在根目錄下的hello.go檔案就可以 import “hello/utils” 引用utils
//hello.go
package main
import (
"hello/utils"
"github.com/astaxie/beego"
)
func main() {
utils.PrintText("Hi")
beego.Run()
}
9.以前老專案如何用新的包管理
如果用auto模式,把專案移動到$GOPATH/src外
進入目錄,執行 go mod init + 模組名稱
go build 或者 go run 一次
10.goproxy.cn - 為中國 Go 語言開發者量身打造的模組代理
go env -w GOPROXY=https://goproxy.cn,direct
相關文章
- Go語言————1、初識GO語言Go
- go語言json的使用技巧GoJSON
- 使用 Go 語言建立 WebSocket 服務GoWeb
- 使用Go語言建立WebSocket服務GoWeb
- Go語言使用swagger生成介面文件GoSwagger
- GO語言————2、GO語言環境安裝Go
- [Go語言寫介面]一、使用xcgui完成go語言第一個軟體介面GoGUI
- 【Go語言入門系列】(八)Go語言是不是面嚮物件語言?Go物件
- Go_go語言初探Go
- 【Go語言入門系列】(七)如何使用Go的方法?Go
- 使用Go語言製作二維碼Go
- go語言 變數的宣告與使用Go變數
- GO語言————6.10 使用閉包除錯Go除錯
- go 語言常量Go
- Go語言mapGo
- go 語言切片Go
- 什麼是Go語言?Go語言有什麼特點?Go
- 使用go語言開發hive匯出工具GoHive
- 為什麼 Go 語言 struct 要使用 tagsGoStruct
- 使用Go語言開發短地址服務Go
- 【轉】使用 Go 語言讀寫 Redis 協議GoRedis協議
- Go 語言 := 的具體使用與區別Go
- 【Go語言繪圖】gg 庫的基本使用Go繪圖
- go語言使用切片實現線性表Go
- go語言與c語言的相互呼叫GoC語言
- 【譯】Go語言宣告語法Go
- go語言學習Go
- 初識go語言Go
- GO語言併發Go
- Go 語言效能分析Go
- Go語言的”坑“Go
- go 語言陣列Go陣列
- Go 語言函式Go函式
- Go 語言運算子Go
- Go語言簡史Go
- go語言的介面Go
- go語言安裝Go
- Go語言運算子Go