一 安装go语言
go语言各个版本之间兼容性比较差。所以可能你需要安装固定的版本
1 安装最新版的go
brew install go
2 查看go可以安装的版本
brew search go
3 安装指定版本的go
brew install go@1.13
4 查看安装的go语言的版本
go version
5 查看go的安装路径
which go || where go
6 查看go的环境变量
go env
主要关注go
语言的GOROOT
GOPATH
GO111MODULE
这三个环境变量
go env | grep "GOROOT" // go语言的安装路径
go env | grep "GOPATH" // go语言的工作目录
go env | grep "GO111MODULE" // go mod的开启状态
7 如果go version
不管用 检查下环境变量是否配置了go
语言的环境变量
二 go mod的使用
go mod可以理解为一个包管理工具(类似于java中的maven)
设置go mod的环境变量
go env -w GO111MODULE=on
go env -w GOPROXY="https://go-mod-proxy.byted.org,https://goproxy.cn,https://proxy.golang.org,direct"
go mod的详细可点击这里:go mod使用
踩坑记录:
1 执行go mod下载的时候提示
fatal: could not read Username for 'https://github.com': terminal prompts disabled
package github.com/XXX/OOOO/: exit status 128
这个是因为利用homebrew下载go时, 默认禁用了terminal prompts(终端提示)
解决方案:在环境变量中开启终端提示
export GIT_TERMINAL_PROMPT=1
2 执行go mod下载的时候某些部分的依赖不能下载
Cloning into 'scripts'...
fatal: unable to access 'https://github.com/open-falcon/scripts.git/': SSL connect error
发生这种情况是因为代理是在git中配置的。既然它是https代理(而不是http)
即使设置代理也是不好用的。git config http.proxy
和git config --global http.proxy
是not work
的
解决方案:在~/.gitconfig
中配置url
的前置替换
[url "git@code.byted.org:"]
insteadOf = https://code.byted.org/
[url "git@git.byted.org:"]
insteadOf = https://git.byted.org/
3 go get/install
时提示
"dial tcp: lookup code.byted.org on 8.8.8.8:53: no such host"
启用 Go Module 之后,Golang 会默认通过 Go Mod Proxy 代理拉取代码,但是由于公司的代码仓库只在公司内网有解析,所以在使用 golang 默认 proxy(https://proxy.golang.org,由谷歌提供)时,无法在 8.8.8.8 解析 code.byted.org 等公司域名,则会提示上面的错误。
解决方案
添加如下环境变量
export GO111MODULE=on
export GOPROXY="https://go-mod-proxy.byted.org,https://proxy.golang.org,direct"
export GOPRIVATE="*.byted.org,*.everphoto.cn,git.smartisan.com"
export GOSUMDB="sum.golang.google.cn"
4 安装kitex(可以用来生成thrift文件的工具,类似于IDEA中生成thrift文件的插件)时提示如下的错误
...
gorepos/gocode/src/code.byted.org/kite/kitex/tool/pkg/parser/AST.go:312:39: not enough arguments in call to iprot.ReadMapBegin
have ()
want (context.Context)
gorepos/gocode/src/code.byted.org/kite/kitex/tool/pkg/parser/AST.go:320:35: not enough arguments in call to iprot.ReadString
have ()
want (context.Context)
gorepos/gocode/src/code.byted.org/kite/kitex/tool/pkg/parser/AST.go:325:35: not enough arguments in call to iprot.ReadString
have ()
want (context.Context)
gorepos/gocode/src/code.byted.org/kite/kitex/tool/pkg/parser/AST.go:325:35: too many errors
刚开始以为是go版本的问题,升级到了go的1.14版本,无果。其实是在goland的terminal中没有打开GO111MODULE(即使在go env时看到是开启,在goland的termind也执行时也是不能正常获取到开启状态的)
解决方案
安装时执行
GO111MODULE=on go get code.byted.org/kite/kitex/tool/cmd/kitex@latest