当前位置:网站首页>Go-6-常用命令-go包管理问题-两个路径-GO111MODULE
Go-6-常用命令-go包管理问题-两个路径-GO111MODULE
2022-08-02 14:56:00 【hahyyy】
常用命令汇总
- go version:获取go版本
- go env:查看go环境变量
- go help:查看go帮助命令
- go get:获取远程包(需提前安装git或hg)
- 使用该命令前必须配置GOPATH,而且依据不同的源码网站,要安装不同的版本管理工具
- go get本质上可以理解为通过源码工具clone下代码后,执行了go install
- 添加 -u 参数可以自动更新包和依赖
- go build:编译并生成可执行程序
- go run:直接运行程序
- go fmt:格式化源码
- 使用go fmt命令,其实是调用了gofmt
- gofmt需要参数 -w ,否则格式化结果不会写入文件
- go install:编译包文件以及整个程序
- 和go build类似,不过它可以在编译后,把生成的可执行文件或者库安装到对应的目录下
- 可执行文件安装到:$GOPATH/bin/
- 可引用库安装到:$GOPATH/pkg/
- 注:没有开启go mod时,使用上述命令需要配置GOPATH,否则会报:no install location
- go test:go原生提供的单元测试命令
- go clean:移除当前源码包和关联源码包里编译生成的文件
- go tool:升级go版本时,修复旧版代码
- godoc -http:80:开启一个本地80端口的web文档
- gdb 可执行程序名:调试go编译出来的文件
go mod的常用命令
- go mod init:初始化当前文件夹,创建go.mod文件
- go mod tidy:检查,包整理(多的删去,少的拉取),使用之前自然是import了需要的库了
- go mod download:下载依赖到本地(默认为GOPATH/pkg/mod目录)
- go mod edit:编辑go.mod文件
- go mod graph:以文本模式打印模块需求图
- go mod vendor:生成vendor目录
- go mod verify:验证依赖是否正确
- go mod why:查找依赖
go包管理
代码如下:
package main
import (
"fmt"
"github.com/jinzhu/configor"
)
func main() {
fmt.Println("vim-go", configor.Config{})
}# 配置Module包管理,记得配置goproxy
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn
# 初始化项目:主要 解决包管理问题
go mod init xxx.go # 初始化,会生成go.mod文件
go mod tidy # 解决依赖问题,会生成go.sum文件
# 运行方法一:直接运行
go run xxx.go
# 运行方法二:编译成可执行文件
go build xxx.go # xxx文件移到任何目录都可以直接运行,不会再有依赖问题
./xxx # 后面不用再加.go
go的三种包管理
go path:
在1.5版本之前,所有的依赖包都是存放在GOPATH下,没有版本控制
这种方式的最大弊端就是无法实现包的多版本控制,比如项目A和项目B依赖与不同版本的package,如果package没有左到完全的向前兼容,往往会导致一些问题
go venfor:
1.5版本推出了vendor机制
所谓的vendor机制,就是每个项目的根目录下可以有一个vendor目录,里面存放了该项目的依赖的package。执行go build的时候会先去vendor目录查找依赖,如果没有再去GOPATH下找
go module:
1.11版本推出modules机制,简称mod。该模式通过mod.go文件管理依赖关系
以目前的情况来说,更推荐选择go module的包管理方式
两个路径
GOROOT:go的安装目录 -- 类似java的jdk,存放一些内置的开发包和工具
GOPATH:go指定的工作空间 -- 用于保存go项目的代码和第三方依赖包
GO111MODULE的可选值
GO111MODULE有三个可选值:on、off和auto
go 1.16之前默认auto,go 1.16之后默认on
GO111MODULE=off:无模块支持,go会从GOPATH和vendor文件夹寻找包
GO111MODULE=on:模块支持,go会忽略GOPATH和vendor文件夹,只根据go.mod下载依赖
GO111MODULE=auto:在$GOPATH/src外面且根目录有go.mod文件时,开启模块支持
边栏推荐
猜你喜欢

【 Leetcode string, the string transform/hexadecimal conversion 】 HJ1. The length of the string last word HJ2. Calculation of a certain number of characters appear HJ30. String merging processing

phpstudy实现命令行操作

中科驭数等单位牵头发布行业首部DPU评测方法技术白皮书

【Untitled】

2022年安全员-A证考试试题及模拟考试

HDU1561 树形背包dp+边界优化 0ms过题

2022年低压电工考试试题及在线模拟考试

阿里巴巴《MySQL成长手册》精简版

MySQL (2)

阿里云上安装MQTT服务器
随机推荐
做好私域流量!全民拼购就可以了。
PAT甲级 1019 普通回文数
Why do I no longer recommend the enumeration strategy pattern?
MySQL语法入门
SQL实现将多行记录合并成一行
太香了!阿里Redis速成笔记,从头到尾全是精华!
5000mAh大电池!华为全新鸿蒙手机今晚亮相:更流畅更安全
mysql 自动添加创建时间、更新时间
树状DP(记忆化搜索)PAT甲级 1079 1090 1106
OneFlow源码解析:Op、Kernel与解释器
如何用JDBC操作Mysql
How to use PHP to implement lexical analyzer and custom language
SQL学习笔记——REGEXP运算符
Brute-force cracking of the latest JVM interview questions of Meituan: unlimited execution
PAT甲级 1143 最低公共祖先
phpstudy实现命令行操作
PAT甲级 1137 期终成绩
PAT tree DP (memory search) class a, 1079, 1090, 1106
高并发 MySQL 性能优化指南,自取
IPtables 和binlog