最近模型工程部分需要用到go。第一次用,把需要注意的写一下。
我go用的GOPATH管理依赖。
1、import的包一定要么在GOPATH,要么在GOROOT
不然你执行程序会找不到包,执行不了。
我理解的go自带的一些包在GOROOT下,而自己搞到的一些包(自己项目需要依赖的)必须得搞到GOPATH下。
简单说,就是 import (“…” …)里的包要么在GOROOT下,要么GOPATH下。
所以项目import的包如果没有在的话,就一定要给它加到GOPATH中去。
主要分为两种情况:
- a)要依赖的包直接就在GOPATH下。比方,go get github.com/zhangsan/jieba拉了一个github的代码库,它会自动被放在GOPATH下,其源文件在GOPATH/src下。
- b)要依赖的包没有在GOPATH下。 比方,我项目里面的一个xxxx.go文件,需要依赖同事M写的lifeUnderstand项目下的某个文件下的xx.go文件里的方法(lifeUnderstand /src/women/young/xx.go)import “women/young”。如果不修改GOPATH,那么就会出现:
connot find package"women/young" in any of :
GOROOT/src/women/young (from $GOROOT)
GOPATH/src/women/young(from $GOPATH)
怎么解决呢:
可以这样搞:修改环境变量,更改GOPATH。
vim ~/.bash_profile
export GOPATH=/home/bae/.jumbo/lib/go/site 假如这是原来的GOPATH (go env可以查到)
修改为:export GOPATH=/home/bae/.jumbo/lib/go/site:/xxx/xxx/lifeUnderstand
source ~/.bash_profile
完成。
注意lifeUnderstand项目下必须得有src,然后才是源码,运行代码找依赖的时候,会去找src,在src下找。
另外补充(from一个博主):
go_project // (go_project为GOPATH目录)
– bin // golang编译可执行文件存放路径
– pkg // golang编译包时,生成的.a文件存放路径
– src // 源码路径。按照golang默认约定,go run,go install等命令的当前工作路径(即自动去src下找文件)。
2、要输出的go文件,必须首行package main,主函数写main()
3、常用命令
go clean -modcache
go mod tidy