指定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