go

发布时间 2024-01-07 01:47:59作者: lxd670

1.GO ENV

查看env值

go env

GO111MODULE="on"
GOARCH="arm64"
...

设置env

Go 1.13 及以上(推荐)

# 开启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程序的唯一入口