一、系統環境變數
GOROOT
指定go的安裝目錄,win是在 C\Go\,Linux在 /usr/local/go下,如果不是默認的目錄,則需要指定 GOROOT環境變數,否則不需要
GOPATH
作業目錄,可以指定多個,環境變數中用 ; 分割 go get下載目錄的時候默認會下載到第一個GOPATH的src目錄下,找 包也是從第一個目錄開始往后找,可以指定兩個作業區,第一個用來專門存放下載庫
- src:源代碼檔案
- pkg:編譯的中間檔案
- bin:編譯產生可執行檔案
GOOS GOARCH用來設定 編譯產生可執行檔案的目標OS和CPU架構
go進行交叉編譯:
linux
GOOS=linux GOARCH=amd64 go build hello.goGOOS=windows GOARCH=amd64 go build hello.go
二、包
1、作用域
包內大寫的:全部包可見
包內小寫的:僅僅在本包內可見
{}塊作用域:只在塊內可見
{
y:=999
}
log.Println(y) //報錯 y不可見
2、包參考
包的全域絕對路徑就是 $GOROOT/src 、$GOPATH/src
當然也可以參考相對路徑
-
可以給包起別名
-
import _ "fmt" //參考而不使用 -
import . "fmt" //參考所有 func main(){ Println("ok") //這樣就可以直接使用包里面的函式 }
3、init()
包里面可以有 init() 函式,一般用來初始化一些包中要用到的全域變數
三、mod包管理
mod只是版本管理工具, 在go mod初始化的專案目錄下執行go get xxx,會將package下載到$GOPATH/pkg/mod目錄下安裝,并且添加或更新到go.mod檔案中
1、相關環境變數
GO111MODULE=off go命令從不使用新模塊支持,使用GOPATH模式(查找vendor目錄和GOPATH路徑下的依賴)
GO111MODULE=on go命令開啟模塊支持,只根據go.mod下載和查找依賴
GO111MODULE=auto 默認值,go命令根據當前目錄啟用或禁用模塊支持,僅當當前目錄位于$GOPATH/src之外并且其本身包含go.mod檔案或位于包含go.mod檔案的目錄下時,才啟用模塊支持,
2、go mod檔案結構
module note-gin
go 1.13
require (
github.com/gin-gonic/gin v1.5.0
github.com/go-redis/redis v6.15.7+incompatible
github.com/go-sql-driver/mysql v1.4.1
github.com/howeyc/fsnotify v0.9.0 // indirect
github.com/jinzhu/gorm v1.9.12
github.com/mattn/go-colorable v0.1.6 // indirect
github.com/onsi/ginkgo v1.12.0 // indirect
github.com/onsi/gomega v1.9.0 // indirect
github.com/pilu/config v0.0.0-20131214182432-3eb99e6c0b9a // indirect
github.com/pilu/fresh v0.0.0-20190826141211-0fa698148017
github.com/pilu/miniassert v0.0.0-20140522125902-bee63581261a // indirect
github.com/qiniu/api.v7/v7 v7.4.1
github.com/robfig/cron v1.2.0
gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect
gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df
gopkg.in/yaml.v2 v2.2.4
)
-
module陳述句指定包的名字(路徑)
-
require陳述句指定的依賴項模塊
-
replace陳述句可以替換依賴項模塊
-
exclude陳述句可以忽略依賴項模塊
module my/thing
require other/thing v1.0.2 //需要的模塊
require new/thing v2.3.4
exclude old/thing v1.2.3 //排除的模塊的某些版本
replace bad/thing v1.4.5 => good/thing v1.4.5 //替換的模塊
3、相關命令
init
go mod init TestGoMod
在當前目錄下創建一個名為 TestGoMod的mod檔案
module TestGoMod
go 1.13
list
go list -m all 查看所有依賴以及間接模塊當前版本
go list -u -m all 查看所有依賴以及間接依賴當前版本和可升級版本
go list -m -versions github.com/gin-gonic/gin 查看某些模塊的所有版本
get
go get -u ./... 更新所有模塊
go get -u github.com/xxxx 更新指定模塊最新版本
go get github.com/xxxxx 下載模塊依賴
//加上@v1.x.x 可以獲取指定版本
go get github.com/gin-gonic/[email protected]
go get github.com/gin-gonic/[email protected]
build
go build ./... 構建當前專案
go test ./... 構建測驗模塊
tidy
架構和構建標記的其他組合中修剪所有不需要的依賴項,并添加其他依賴項所需的任何依賴項
go mod tidy
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/17389.html
標籤:Go
上一篇:7. Go 語言資料型別:指標
