指定go的安裝目錄,win是在 C\Go\,Linux在 /usr/local/go下,若是不是默認的目錄,則須要指定 GOROOT環境變量,不然不須要mysql
工做目錄,能夠指定多個,環境變量中用 ;
分割 go get下載目錄的時候默認會下載到第一個GOPATH的src目錄下,找 包也是從第一個目錄開始日後找。能夠指定兩個工做區,第一個用來專門存放下載庫linux
go進行交叉編譯:git
linuxgithub
GOOS=linux GOARCH=amd64 go build hello.goGOOS=windows GOARCH=amd64 go build hello.go
包內大寫的:所有包可見redis
包內小寫的:僅僅在本包內可見sql
{}塊做用域:只在塊內可見windows
{ y:=999 } log.Println(y) //報錯 y不可見
包的全局絕對路徑就是 $GOROOT/src 、$GOPATH/srcapi
固然也能夠引用相對路徑bash
能夠給包起別名架構
import _ "fmt" //引用而不使用
import . "fmt" //引用全部 func main(){ Println("ok") //這樣就能夠直接使用包裏面的函數 }
包裏面能夠有 init() 函數,通常用來初始化一些包中要用到的全局變量
mod只是版本管理工具, 在go mod
初始化的項目目錄下執行go get xxx
,會將package下載到$GOPATH/pkg/mod
目錄下安裝,而且添加或更新到go.mod文件中
GO111MODULE=off go命令從不使用新模塊支持。使用GOPATH模式(查找vendor目錄和GOPATH路徑下的依賴) GO111MODULE=on go命令開啓模塊支持,只根據go.mod下載和查找依賴 GO111MODULE=auto 默認值,go命令根據當前目錄啓用或禁用模塊支持。僅噹噹前目錄位於$GOPATH/src以外而且其自己包含go.mod文件或位於包含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 //替換的模塊
go mod init TestGoMod
在當前目錄下建立一個名爲 TestGoMod的mod文件
module TestGoMod go 1.13
go list -m all 查看全部依賴以及間接模塊當前版本 go list -u -m all 查看全部依賴以及間接依賴當前版本和可升級版本 go list -m -versions github.com/gin-gonic/gin 查看某些模塊的全部版本
go get -u ./... 更新全部模塊 go get -u github.com/xxxx 更新指定模塊最新版本 go get github.com/xxxxx 下載模塊依賴 //加上@v1.x.x 能夠獲取指定版本 go get github.com/gin-gonic/gin@v1.3.0 go get github.com/gin-gonic/gin@v1.1.4
go build ./... 構建當前項目 go test ./... 構建測試模塊
架構和構建標記的其餘組合中修剪全部不須要的依賴項,並添加其餘依賴項所需的任何依賴項
go mod tidy