golang环境搭建

img

首先安装linux环境下 go语言的开发环境

1
2

wget https://golang.google.cn/dl/go1.17.2.linux-amd64.tar.gz -O /tmp/go1.17.2.linux-amd64.tar.gz
1
2
3
4

mkdir -p $HOME/go
tar -xvzf /tmp/go1.17.2.linux-amd64.tar.gz -C $HOME/go
mv $HOME/go/go $HOME/go/go1.17.2
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13

tee -a $HOME/.bashrc <<'EOF'
# Go envs
export GOVERSION=go1.17.2 # Go 版本设置
export GO_INSTALL_DIR=$HOME/go # Go 安装目录
export GOROOT=$GO_INSTALL_DIR/$GOVERSION # GOROOT 设置
export GOPATH=$WORKSPACE/golang # GOPATH 设置
export PATH=$GOROOT/bin:$GOPATH/bin:$PATH # 将 Go 语言自带的和通过 go install 安装的二进制文件加入到 PATH 路径中
export GO111MODULE="on" # 开启 Go moudles 特性
export GOPROXY=https://goproxy.cn,direct # 安装 Go 模块时,代理服务器设置
export GOPRIVATE=
export GOSUMDB=off # 关闭校验 Go 依赖包的哈希值
EOF

为什么要增加这么多环境变量呢?这是因为,Go 语言是通过一系列的环境变量来控制 Go 编译器行为的。因此,我们一定要理解每一个环境变量的含义。

因为 Go 以后会用 Go modules 来管理依赖,所以我建议你将 GO111MODULE 设置为 on。

在使用模块的时候,GOPATH 是无意义的,

不过它还是会把下载的依赖储存在 GOPATH/pkg/mod 目录中,

也会把 go install 的二进制文件存放在 GOPATH/bin 目录中。

另外,我们还要将 GOPATH/bin、GOROOT/bin

加入到 Linux 可执行文件搜索路径中。这样一来,我们就可以直接在 bash shell 中执行 go 自带的命令,

以及通过 go install 安装的命令。最后就是进行测试了,

如果我们执行 go version 命令可以成功输出 Go 的版本,就说明 Go 编译环境安装成功。具体的命令如下:

1
2
3
4

bash
go version
go version go1.17.2 linu x/amd64

安装 protoBuf编译环境

接着,我们再来安装 protobuf 的编译器 protoc。protoc 需要 protoc-gen-go 来完成 Go 语言的代码转换,因此我们需要安装 protoc 和 protoc-gen-go 这 2 个工具。它们的安装方法比较简单,你直接看我下面给出的代码和操作注释就可以了。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14

# 第一步:安装 protobuf
cd /tmp/
git clone --depth=1 https://github.com/protocolbuffers/protobuf
cd protobuf
./autogen.sh
./configure
make
sudo make install
protoc --version # 查看 protoc 版本,成功输出版本号,说明安装成功
libprotoc 3.15.6

# 第二步:安装 protoc-gen-go
go get -u github.com/golang/protobuf/protoc-gen-go

Go 开发 IDE 安装和配置

因此,在 Linux 环境下我们可以选择将 Vim 配置成 Go IDE,熟悉 Vim IDE 的操作之后,它的开发效率不输 GoLand 和 VSCode。比如说,我们可以通过 SpaceVim 将 Vim 配置成一个 Go IDE。

SpaceVim 是一个社区驱动的模块化的 Vim IDE,以模块的方式组织管理插件以及相关配置, 为不同的语言开发量身定制了相关的开发模块,该模块提供代码自动补全、 语法检查、格式化、调试、REPL 等特性。我们只需要载入相关语言的模块就能得到一个开箱即用的 Vim IDE 了。

Vim 可以选择 NeoVim,NeoVim 是基于 Vim 的一个 fork 分支,它主要解决了 Vim8 之前版本中的异步执行、开发模式等问题,对 Vim 的兼容性很好。同时对 vim 的代码进行了大量地清理和重构,去掉了对老旧系统的支持,添加了新的特性。虽然 Vim8 后来也新增了异步执行等特性,在使用层面两者差异不大,但是 NeoVim 开发更激进,新特性更多,架构也相对更合理,所以我选择了 NeoVim,你也可以根据个人爱好来选择(都是很优秀的编辑器,这里不做优缺点比较)。Vim IDE 的安装和配置主要分五步。

安装neoVim

1
2
3

sudo pip3 install pynvim
sudo yum -y install neovim

ubuntu安装 neovim 的方法

配置 neovim

1
2
3
4
5
6

tee -a $HOME/.bashrc <<'EOF'
# Configure for nvim
export EDITOR=nvim # 默认的编辑器(git 会用到)
alias vi="nvim"
EOF

检查安装

我们可以通过查看 NeoVim 版本来确认是否成功安装,如果成功输出版本号,说明 NeoVim 安装成功。

1
2
3
4
5
6

 bash
vi --version # 输出 NVIM v0.3.8 说明安装成功
NVIM v0.3.8
Build type: RelWithDebInfo
...

离线安装 spaceVim

space vim是什么?

space vim官网

spacevim不是对vim/neovim的实现, 而是在vim/neovim之上整合了很多好用的插件. 要知道vim/neovim之所以那么好用, 有大量好用的插件是非常重要的原因.

1
2
3
4
5
6

cd /tmp
wget https://marmotedu-1254073058.cos.ap-beijing.myqcloud.com/tools/marmotVim.tar.gz
tar -xvzf marmotVim.tar.gz
cd marmotVim
./marmotVimCtl install

SpaceVim 会用到一些 Go 工具,比如在函数跳转时会用到 guru、godef 工具,在格式化时会用到 goimports,所以我们也需要安装这些工具。安装方法有 2 种:Vim 底线命令安装:vi test.go,然后执行::GoInstallBinaries 安装。拷贝工具:直接将整理好的工具文件拷贝到$GOPATH/bin 目录下。为了方便,你可以直接拷贝我已经打包好的 Go 工具到指定目录下:

1
2
3
4
5

cd /tmp
wget https://marmotedu-1254073058.cos.ap-beijing.myqcloud.com/tools/gotools-for-spacevim.tgz
mkdir -p $GOPATH/bin
tar -xvzf gotools-for-spacevim.tgz -C $GOPATH/bin

space vim go ide常见的快捷键

img