GoLang 基本介绍

2018-08-21 golang

GoLang 目前越来越火,包括了 Docker、InfluxDB、etcd 等等,越来越多的工程都在使用 GoLang 。虽然它的语法都比较 “奇葩”,一些高级语言支持的特性却都不支持,但其高并发、高效率等等,也使其热度不减。

这篇文章主要简单介绍下 GoLang 环境的搭建。

golang logo

环境准备

GoLang 有多种安装方式,主要包括了三种最常见的安装方式:

  • 操作系统的软件管理工具,如 Ubuntu 的 apt-get、CentOS 的 yum、Mac 的 homebrew 等,还有就是类似 GVM 的工具。
  • Go 标准包安装。官网也提供了已经编译好的二进制安装包,支持 Windows、Linux、Mac等系统,包括 X86、ARM 等平台。
  • Go 源码安装。对于经常使用 *nix 类系统的用户,尤其对于开发者来说,这种方式比较熟悉,而且从源码安装可以自己进行定制。

其中,上面提到了一个 GVM 工具,如果想在同一个系统中安装多个版本,建议可以使用该工具。

安装

可以通过 OS 提供的能力,或者使用直接使用二进制安装。

YUM 安装

在 CentOS 7 中可以通过 yum list all | grep golang 查看、安装,该二进制包在 base 中。

# yum install golang

二进制安装

可以从 golang.org/dl 上下载源码包,当然也可以从 studygolang.com 上下载。从中选择相应的平台,例如 Linux 包名称类似于 go1.19.0.linux-amd64.tar.gz 已经编译好的二进制包,可以直接下载解压即可;如果是 Windows 直接下载 msi 安装文件即可,例如 go1.19.0.windows-amd64.msi 文件。

环境变量

通过 go env 可以查看当前与 GoLang 相关的环境变量,可以在 ~/.bashrc 类似的配置文件中设置,也可以通过 go env -w GO111MODULE=auto 类似的方式持久化到用户配置,一般就保存在 ~/.config/go/env 文件中。

如下简单介绍常见的配置项,最佳实践如上所述:

  • GOROOT 指定安装路径,如果在标准路径,可使用系统默认值,通过 unset GOROOT 取消该环境变量即可。
  • GOPATH 工作空间目录,用来保存项目代码以及一些三方包,例如像 K8S 的一些开发项目也建议保存在该目录下。
#----- 设置安装目录,同时将可执行文件添加到PATH中
export GOROOT=/opt/golang/1.18.1

#----- 默认是在~/go目录下,这里同样制定opt目录,项目中建议重新配置
export GOPATH=/opt/golang/vendor
export PATH=${GOROOT}/bin:${GOPATH}/bin:${PATH}

#----- 设置默认代理,否则下载会很慢
export GOPROXY=https://goproxy.cn

Proxy

从 1.11 版本开始,新增了 GOPROXY 环境变量,如果设置了该变量,下载源代码时将会通过这个环境变量设置的代理地址下载。

go env -w GOPROXY=http://mirrors.tools.huawei.com/goproxy/;https://goproxy.io;https://goproxy.cn
go env -w GOSUMDB=off 
go env -w GONOSUMDB=*

对于 1.13 以上版本,也可以执行 go env -w GOPROXY=https://goproxy.cn,direct 设置,详细可参考 goproxy.cn 的介绍。

常见问题

GoLand

使用 GoLand 配置 GoLang 的路径时可能会出现 The selected directory is not a valid home for Go SDK 的报错,需要修改安装目录下的 src/runtime/internal/sys/zversion.go 文件,增加如下的变量。

const TheVersion = `go1.17.2`

三方包

简单以安装 GoLang Colorized Output 包为例,会保存在 $GOPATH/bin 目录下。

----- 老的版本中需要先下载二进制包再安装
$ go get github.com/bclicn/color
----- 在 Go 1.16 之后可以直接通过如下命令安装
$ go install github.com/bclicn/color@latest

在比较新的 GoLang 版本,其中 go get 不再支持在 module 外执行,也可以手动下载源码,放到 $GOPATH/src/github.com/bclicn/color 目录下,然后直接执行 go install 命令。如果没有下载源码,可能会导致如下的报错。

$ go install color
can't load package: package color: cannot find package "color" in any of:
        $GOROOT/goroot/src/color (from $GOROOT)
        $GOPATH/src/color (from $GOPATH)

不过由于万能的 XXX 导致很多依赖包下载失败,常见的是 golang.org/x 包,此时可以从 GitHub GoLang 上下载,例如 Github golang/tools 就是工具包,可以直接将上述的代码仓库下载下来,然后放到 $GOPATH/golang.org/x/tools 目录下即可。

参考

官方网站 golang.org 被墙,常见的工具可以从 Gopm Registry 上下载,而文档资料等可以从 Golang 中国 上查看。

另外,Github - Golang 提供了很多 golang.org/x/ 的镜像包,只需要下载并保存到 $GOPATH/src 目录下。