1. install golang by brew
$ brew install go
2. set Path for Go
# .zshrc # go export GOROOT=/opt/homebrew/Cellar/go/1.18/libexec export GOPATH=$HOME/workspace/project/go export PATH=$PATH:$GOROOT/bin:$GOPATH/bin export GOPROXY=https://goproxy.cn,direct export GOPRIVATE=XXX(具体的私有库,可根据自己的配置来定)
注意,低版本 Go 不支持 GOPROXY 中带逗号。
3. view go version
$ go version go version go1.18 darwin/arm64对于有些早期项目使用较低 Go 版本构建,使用「1.18」版本编译通不过,
注意,安装 Go 尽量安装团队统一在用的版本,安装过高或过低版本,可能有些地方不支持会产生许多报错。
这时需要支持 Go 多版本切换,安装「1.16」版本。$ brew search go $ brew unlink go $ brew install go@1.16 $ brew link go@1.16 $ go version go version go1.16.15 darwin/arm64
切换版本,也得切换对应的环境变量
export GOROOT=/opt/homebrew/Cellar/go@1.16/1.16.15/libexec
如果不使用 brew,也可从 https://golang.org/dl/ 选择合适版本,
下载完后,go version 可查看 go 版本,如有显示版本代表安装成功,
go env 查看 go 环境变量。
二、IDE 使用 VSCodeVSCode 中安装 Go 的扩展,让它支持 Go 语言开发
填坑记录
Go插件一般可以直接安装成功,如果幸运的话,需要填一下这个坑。
Failed to find the "go" binary in either。GOROOT() or PATH(/usr/bin:/bin:/usr/sbin:/sbin). Check PATH, or Install Go and reload the window.
- Shift + Cmd + P
- Search for: "open settings" and choose "Open Settings (JSON)"
- Run go env and copy GOROOT value (in my case it's /opt/homebrew/Cellar/go@1.17/1.17.11/libexec).
- Add new record to settings.json:
"go.goroot": "Copied/GOROOT/path"In my case,
"go.gopath": "/Users/shouyuan.man/workspace/project/go", "go.goroot": "/opt/homebrew/Cellar/go@1.17/1.17.11/libexec"
安装 Go 语言开发工具包,支持提供诸如代码提示、代码自动补全等功能
如果代码中使用了「golangci-lint、goimports、mockgen、modvendor」,则用下面命令安装。
$ GO111MODULE=off go get install github.com/goware/modvendor $ GO111MODULE=off go get github.com/golang/mock/gomock $ go install github.com/golang/mock/gomock $ GO111MODULE=off go get github.com/golang/mock/mockgen $ go install github.com/golang/mock/mockgen $ GO111MODULE=off go get golang.org/x/tools/cmd/goimports $ go install golang.org/x/tools/cmd/goimports $ brew install golangci-lint
最后安装的 GO 开发辅助工具放在 bin 中
三、RPC相关填坑
设置了 GOPROXY 代理,还是出现 i/o timeout,
Get "https://proxy.golang.org/github.com/cweill/gotests/gotests/@v/list": dial tcp 172.217.160.113:443: i/o timeout
问题:设置了GOPROXY还是出现i/o timeout · Issue #93 · goproxy/goproxy.cn · GitHub
解决VSCode安装Go tools失败的问题 | L2M2
后来发现,还得设置 GO111MODULE="on"。
如果代码库还是拉不下来,那就看看代码库的权限吧。
常用的 RPC 框架有两种,一种是「仅提供 RPC 调用能力」,如 grpc、Thrift 等, grpc 依赖了 Protocol Buffers(PB);另一种是「除了提供基本的RPC调用能力,还承载了各种服务治理功能」,如Dubbo、Motan、Spring Cloud等,与其说spring cloud是一个RPC框架,还不如说它是一个分布式系统解决方案,生态非常庞大。
如果仅仅是使用 RPC 调用功能,第一种 RPC 就能满足需要,要在 Go 项目中使用grpc、thrift,至少需要安装以下环境。
proto(proto>=3.5.0)1. download
https://github.com/protocolbuffers/protobuf/releases/download/v3.5.0/protoc-3.5.0-osx-x86_64.zip
2. unzip
unzip protoc-3.5.0-osx-x86_64.zip -d protoc-3.5.0-osx-x86_64
3. mv
mv protoc-3.5.0-osx-x86_64/bin/protoc /usr/local/bin/protoc
4. validate
protoc --version
cd $GOPATH
mkdir -p src/github.com/golang
cd src/github.com/golang
wget https://github.com/golang/protobuf/archive/v1.3.2.zip
unzip v1.3.2.zip
mv protobuf-1.3.2 protobuf
cd protobuf
go install github.com/golang/protobuf/protoc-gen-go
brew install thrift@0.9
echo 'export PATH="/usr/local/opt/thrift@0.9/bin:$PATH"' >> ~/.bashrc
Go Dev 网站
The Go Programming Language
golang.org
一个学 Go 的中文社区
Go下载 - Go语言中文网 - Golang中文社区
Have Fun



