go test依赖
戈壁堂 · · 2103 次点击 · · 开始浏览同事的项目本地执行没有问题,线上跑go test的时候一直无法通过,build 失败。
最终定位原因:
- 环境需要安装gcc环境
- 打开golang的环境变量
CGO_ENABLED="1"
环境默认是打开了CGO的,但执行go test时会报gcc错误。为了不安装gcc环境,强制修改了这个变量(还尝试了半天修改的方法)
这是因为甚至是go test ./...时,有些报会使用到 "C混合编译",需要注意这俩个关键因素。
go import
Understanding Dependency Management in Go Understanding Vendoring:
In order to be able to fully understand how vendoring works we must understand the algorithm used by Go to resolve import paths, which is the following:
- Look for the import at the local vendor directory (if any)
- If we can’t find this package in the local vendor directory we go up to the parent folder and try to find it in the vendor directory there (if any)
- We repeat step 2 until we reach $GOPATH/src
- We look for the imported package at $GOROOT
- If we can’t find this package at GOROOT we look for it in ourGOPATH/src folder
go mod
Go mod 使用
告别GOPATH,快速使用 go mod(Golang包管理工具)
go.mod文件中定义了当前项目对应的module名称,如golang.gebitang.com/my/module。
对于pkg/util/log的包,当前项目中使用import时,可以使用下面的方式进行引入。go mod模块会自动进行转换
import (
"golang.gebitang.com/my/module/pkg/util/log"
)
go mod将依赖统一放到GOPATH下的pkg下的pkg下面,并且支持不同版本(使用@vMajor.minor.path)的格式管理
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传
收入到我管理的专栏 新建专栏
同事的项目本地执行没有问题,线上跑go test的时候一直无法通过,build 失败。
最终定位原因:
- 环境需要安装gcc环境
- 打开golang的环境变量
CGO_ENABLED="1"
环境默认是打开了CGO的,但执行go test时会报gcc错误。为了不安装gcc环境,强制修改了这个变量(还尝试了半天修改的方法)
这是因为甚至是go test ./...时,有些报会使用到 "C混合编译",需要注意这俩个关键因素。
go import
Understanding Dependency Management in Go Understanding Vendoring:
In order to be able to fully understand how vendoring works we must understand the algorithm used by Go to resolve import paths, which is the following:
- Look for the import at the local vendor directory (if any)
- If we can’t find this package in the local vendor directory we go up to the parent folder and try to find it in the vendor directory there (if any)
- We repeat step 2 until we reach $GOPATH/src
- We look for the imported package at $GOROOT
- If we can’t find this package at GOROOT we look for it in ourGOPATH/src folder
go mod
Go mod 使用
告别GOPATH,快速使用 go mod(Golang包管理工具)
go.mod文件中定义了当前项目对应的module名称,如golang.gebitang.com/my/module。
对于pkg/util/log的包,当前项目中使用import时,可以使用下面的方式进行引入。go mod模块会自动进行转换
import (
"golang.gebitang.com/my/module/pkg/util/log"
)
go mod将依赖统一放到GOPATH下的pkg下的pkg下面,并且支持不同版本(使用@vMajor.minor.path)的格式管理