1.GO ENV
查看env值
go env
GO111MODULE="on"
GOARCH="arm64"
...
设置env
# 开启GO mod 和设置go模块代码
$ go env -w GO111MODULE=on
$ go env -w GOPROXY=https://goproxy.cn,direct
GOROOT和GOPATH
GOROOT就是go安装的根目录
GOPATH就是go项目所在的目录,高版本go不在依赖go path管理项目,使用go mod来管理
2.快速生成代码片段
// 生成main函数
pkgm
package main
func main() {
}
// 打印
ff
fmt.Printf("", var)
// 循环
for
for i := 0; i < count; i++ {
}
// range循环
forr
for _, v := range v {
}
// 快速生成main函数
fmain
func main() {
}
// 打印变量
s.print
fmt.Printf("s: %v\n", s)
3.go mod使用
3-1.go mod init
初始化
go.mod
文件
go mod init <模块名>
// go.mod文件
module <模块名>
go <go-version>
3-2.go mod edit
edit会编辑go.mod文件,当然也可以手动更改
-model
go mod edit -module=t11
-go
更改go.mod的go版本
go mod edit -go=1.18
-require
添加
添加需要版本号
go mod edit -require=example.com/m@v1.0.0
删除
删除时不需要版本
go mod edit -droprequire=example.com/m
-replace替换
替换
go mod edit
命令编辑example.com/hello
模块以将 Go 工具从其模块路径(模块不在的位置)重定向到本地目录(它所在的位置)
go mod edit -replace example.com/a@v1.0.0=./a
# 在go.mod中会多出一行
replace example.com/a v1.0.0 => ./a
删除替换
go mod edit -dropreplace example.com/a@v1.0.0
# 在go.mod中会删除一下行
replace example.com/a v1.0.0 => ./a
-exclude
添加排除模块
go mod edit -exclude=example.com/m@v1.0.0
# go.mod会添加一行记录
exclude example.com/m v1.0.0
删除排除模块
go mod edit -dropexclude=example.com/m@v1.0.0
-fmt格式
格式化go.mod文件
# 两条命令相同
go mod edit -fmt
go mod edit -fmt go.mod
-json输出go.mod内容
# 两条命令相同
go mod edit -json
go mod edit -json go.mod
{
"Module": {"Path": "t1"},
"Go": "1.18",
"Require": [{"Path": "github.com/gin-gonic/gin", "Version": "v1.9.0"}],
"Exclude": null,
"Replace": null,
"Retract": null
}
-print输出go.mod内容
# 两条命令相同
go mod edit -print
go mod edit -print go.mod
module t1
go 1.18
require github.com/gin-gonic/gin v1.9.0
3-3.go mod tidy
把项目依赖自动添加
go.mod
和更新go.sum
# 1.删除原来的go.mod和go.sum
rm -rf go.mod go.sum
# 2.初始化go.mod
go mod init <model_name>
# 3.使用tidy更新go.mod和go.sum
go mod tidy
3-4.go mod verify
验证引入模块和版本号是否正确
修改go.mod
// 更改版本v0.14.1 -> v0.14.3
github.com/go-playground/locales v0.14.1
github.com/go-playground/locales v0.14.3
检查
go mod verify
# 报错信息
go: github.com/go-playground/locales@v0.14.3: reading github.com/go-playground/locales/go.mod at revision v0.14.3: unknown revision v0.14.3
3-5.go mod download
更新
go.mod
引用最新的包版本
# 如果locales使用v0.14.0版本,而github上已经为v0.14.1版本
github.com/go-playground/locales v0.14.0
# 使用download
go mod download
# 在go.mod中会把locales变为v0.14.1版本
github.com/go-playground/locales v0.14.1
go导包原理
1.文件夹名称和package name不需要同一,没有统一性要求
2.在同一个文件夹下的go文件package name必须一样。同一个package下面的go文件可以随意自由的相互调用
小写开头的是私有的,大写的是公有的
私有的只能在同个package下使用,不能夸模块使用
3. main包和main函数是go程序的唯一入口