配置go环境
go env -w GO111MODULE=on //开启go moudle
go env -w GOPROXY=https://goproxy.cn //设置国内代理
go env查看配置信息
go mod依赖管理
go mod文件
//项目名
module go_workspace
//go sdk版本
go 1.19
//当前module(项目)依赖的包
require (
dependency latest //第一个字段是依赖的包,第二个是包的版本
)
//排除第三方包
exclude (
dependency latest //第一个字段是不依赖的包,第二个是包的版本
)
//修改依赖包的路径或版本
//场景:依赖包发生迁移
//原始包无法访问
//使用本地包替换原始包
replace (
source latest => target latest
)
//撤回,自己的项目作为别人的第三方包有bug
//场景:甲乙两个项目用我的项目(版本1.0.0)为第三方包,乙出现问题,我会推出1.0.1版本供乙使用,
//但是乙有可能会继续访问1.0.0版本,我可以用retract撤回1.0.0
retract ()
go mod命令
//将模块下载到本地缓存,需要指定模块路径及版本号
go mod download
//例如:
go mod download github.com/gin-gonic/gin@v1.9.0
//初始化一个新的项目(模块)到当前目录
go mod init
//例如:
go mod init gomodcase
//依赖对齐,添加缺少的依赖,删除未使用的依赖
go mod tidy//常用
//通过工具或脚本编辑go.mod
go mod edit
//根据go.mod中的依赖项制作vendor副本
//有了vendor副本,项目将不再依赖本地缓存
go mod vendor
//验证依赖是否正确
go mod verify
//返回对指定模块的依赖关系最短路径,解释为什么依赖指定包
go mod why
go install/get/clean
//go install 安装可执行插件(安装目录:GOPATH)
//例如:
go install github.com/google/gops@latest
//go get 获取模块信息并更新go.mod文件(go get -u更新模块依赖,并更新go.mod)
//若本地缓存模块没有该模块,则下载模块,若有直接引用
//例如:
go get github.com/gin-gonic/gin@1.9.0
//go clean清理临时目录中的文件
//例如:
go clean -modcache
执行流程分析
源文件.go ——go build编译——>可执行文件 .exe文件 ——运行——> 结果
源文件.go ——go run 编译运行一步走 ——> 结果
注意事项
- 编译后的文件名可以重命名
- go编译器是一行一行进行编译的,不能把多条语句写在同一行
两者区别
go build:在编译时,编译器会将程序运行依赖的库文件包含在可执行文件中,那么可以将所产生的可执行文件拷贝到没有go开发环境的机器上,仍然可以运行
go run:编译并执行,如果要在另外机器上运行,也需要go开发环境,否则无法执行