为方便开发,在开发环境往往需要设置三个环境变量:
$GOROOT
go
$GOPATH
go build
go install
$PATH
bin
Go的环境变量在官方文档中也有详情的说明,请参考链接:https://golang.google.cn/doc/install/source
环境变量中的$GOOS和$GOARCH是比较实用的两个变量,可以用在不同平台的交叉编译中,只需要在go build之前设置这两个变量即可,这也是go语言的优势之一:可以编译生成跨平台运行的可执行文件。感觉比QT更高效更轻量级,虽然生成的可执行文件是大了一点,不过也在可接受的范围之内。 例如,在Linux amd64架构下编译Windows x86的可执行文件,可以使用如下命令: CGO_ENABLED=0 GOOS=windows GOARCH=386 go build hello.go 遗憾的是交叉编译暂不支持cgo方式,因此需要将环境变量$CGO_ENABLED设置为0,这样执行之后会在当前目录生成一个hello.exe的windows x86架构的可执行文件。
环境变量中的$GOOS和$GOARCH是比较实用的两个变量,可以用在不同平台的交叉编译中,只需要在go build之前设置这两个变量即可,这也是go语言的优势之一:可以编译生成跨平台运行的可执行文件。感觉比QT更高效更轻量级,虽然生成的可执行文件是大了一点,不过也在可接受的范围之内。 例如,在Linux amd64架构下编译Windows x86的可执行文件,可以使用如下命令:
$GOOS
$GOARCH
Linux amd64
Windows x86
CGO_ENABLED=0 GOOS=windows GOARCH=386 go build hello.go
遗憾的是交叉编译暂不支持cgo方式,因此需要将环境变量$CGO_ENABLED设置为0,这样执行之后会在当前目录生成一个hello.exe的windows x86架构的可执行文件。
cgo
$CGO_ENABLED
hello.exe
windows x86
除了$PATH环境外,其他环境变量都是可选的。
为什么说这个步骤可选呢?因为未来的Go版本慢慢开始移除对$GOPATH/$GOROOT的支持。此外,在Goland这个IDE中集成有Terminal功能,直接使用这个功能中已经设置好了环境变量。
Go
Goland
Terminal
*nix
在*nix系统下(Linux/Unix/MacOS/*BSD等等),需要在/etc/profile中增加以下环境变量设置后,执行命令#source /etc/profile重新加载profile配置文件(或重新登录),将以下变量添加到用户的环境变量中:
Linux/Unix/MacOS/*BSD
/etc/profile
#source /etc/profile
export GOROOT=/usr/local/go export GOPATH=/Users/john/Workspace/Go/GOPATH export PATH=$GOPATH/bin:$GOROOT/bin:$PATH
Windows
Windows如何修改系统环境变量,以及修改环境变量PATH,请参考网上教程(百度 或 Google)。
PATH
本文以Goland开发工具为基础,介绍在该IDE下的常用工具配置。
常用的工具包括:
go fmt
golangci-lint
goimports
import
golint
由于这三个工具是Goland自带的,因此配置比较简单,参考以下图文操作示例:
在Goland的设置中,选择Tools - File Watchers,随后选择添加
Tools
File Watchers
依次点击添加这3个工具,使用默认的配置即可
随后在撸代码的过程中保存代码文件时将会自动触发这3个工具的自动检测。
由于Goland没有自带golint工具,因此首先要自己去下载安装该工具。
如果有goproxy配置了,可以直接go install golang.org/x/lint/golint@latest 安装,就不需要使用下方命令了。
go install golang.org/x/lint/golint@latest
使用以下命令安装:
mkdir -p $GOPATH/src/golang.org/x/ cd $GOPATH/src/golang.org/x/ git clone https://github.com/golang/lint.git git clone https://github.com/golang/tools.git cd $GOPATH/src/golang.org/x/lint/golint go install
安装成功之后将会在$GOPATH/bin目录下看到自动生成了golint二进制工具文件。
$GOPATH/bin
随后在Goland的Tools - File Watchers配置下,通过复制go fmt的配置
修改Name, Program, Arguments三项配置,其中Arguments需要加上-set_exit_status参数,如图所示:
Name
Program
Arguments
-set_exit_status
保存即可,随后在代码编写中执行保存操作时将会自动触发golint工具检测。
run $FileDir$
注意:
go Linter
github是个大问题
导入golangci-lint时很慢,失败了,在Program:位置显示的文字是红色的,会有影响吗?
是的,非常慢,红色肯定是不行的,说明没有装上。我在全局那啥的情况下,装了5次才成功,期间还得到某个目录下checkout一个非master分支。。
golangci-lint 官方建议使用二进制安装,不要用源码安装,而goland的这个自动安装是源码安装。
鉴于其安装复杂度,我最终选择不安装这个 lint
官网:https://golangci-lint.run/
安装教程:https://golangci-lint.run/usage/install/
P.S. 这个工具一定要用它的install.sh脚本安装,用go install直接安装有点问题,一些编译时的元数据会缺失。
可以 brew 安装
感觉可以挂个goproxy.cn,然后用go install安装
7 Comments
扶程星云
github是个大问题
randol
导入golangci-lint时很慢,失败了,在Program:位置显示的文字是红色的,会有影响吗?
Rainshaw
是的,非常慢,红色肯定是不行的,说明没有装上。我在全局那啥的情况下,装了5次才成功,期间还得到某个目录下checkout一个非master分支。。
golangci-lint 官方建议使用二进制安装,不要用源码安装,而goland的这个自动安装是源码安装。
鉴于其安装复杂度,我最终选择不安装这个 lint
智刚
官网:https://golangci-lint.run/
安装教程:https://golangci-lint.run/usage/install/
酱油入侵
P.S. 这个工具一定要用它的install.sh脚本安装,用go install直接安装有点问题,一些编译时的元数据会缺失。
智刚
可以 brew 安装
海亮
感觉可以挂个goproxy.cn,然后用go install安装