CTyunOS 3 是 CTyunOS 在2023年4月发布的最新版本,上游采用了openEuler社区发布的长期稳定版本 openEuler 22.03 LTS SP1作为基线,针对云计算、云原生场景进行了深度的开发,目前在天翼云上已经可以开通该操作系统的弹性云主机。本文主要面向Golang的新上手的同学了解在CTyunOS 3 上如何快速搭建一个适合做Golang开发的环境。
CTyunOS 3上Golang版本是1.17.3 ,可通过如下命令进行golang的安装
dnf install -y golang
安装完成后可通过命令判断是否安装成功
# go version
go version go1.17.3 linux/amd64
此时就可以进行golang的编码了,但是在编码之前我们需要处理几个环境参数。
在Golang中有两个环境变量,分别为GOROOT,GOPATH
- GOROOT : 即Golang安装的目录
- GOPATH : 工作空间,即Golang项目所在的路径
安装完Golang后会有默认的配置,可通过如下命令进行查看
# go env
GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/root/.cache/go-build"
GOENV="/root/.config/go/env"
GOEXE=""
GOEXPERIMENT=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOINSECURE=""
GOMODCACHE="/root/code/go/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/root/code/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/usr/lib/golang"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/lib/golang/pkg/tool/linux_amd64"
GOVCS=""
GOVERSION="go1.17.3"
GCCGO="gccgo"
AR="ar"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD="/dev/null"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build3663865644=/tmp/go-build -gno-record-gcc-switches"
GOROOT 我们不能轻易变动,我们需要把GOPATH设置到我们正常编译的目录下,GOPATH主要用于如下场景
- 执行编译后二进制文件的存放路径
- Golang依赖包下载的默认放置路径
- 在通过import导入软件包时搜索路径之一
如果期望配置默认的GOPATH可以在 用户的bashrc中进行设置
# echo "export GOPATH=/root/code/go" >> ~/.bashrc
# source ~/.bashrc
此时就可以在/root/code/go目录下创建一个src目录并进行Golang的开发了。
我们先写一个hello world
package main
import "fmt"
func main() {
fmt.Println("hello world")
}
通过如下命令执行
# go run main.go
hello world
在开发Golang的过程中需要依赖多个第三方库,如果下载第三方库的时候需要进行一些操作。首先需要配置一个golang代理
# export GOPROXY=https://proxy.golang.com.cn,direct
设置完成后,可通过go env查看是否成功配置
# go env
...
GOPROXY="https://proxy.golang.com.cn,direct"
...
如果想长期生效的话,也可以像GOPATH一样放到bashrc中
设置后代理后我们就可以正常下载第三方库了,在使用之前还有一个地方需要进行配置,就是在Golang 1.14版本中官方正式发布了go mod工具,针对三方库进行统一管理。
我们在项目中先生成一个mod地址,可以使用如下方式进行初始化
# ls
main.go
# go mod init
go: creating new go.mod: module myproject
go: to add module requirements and sums:
go mod tidy
# ls
go.mod main.go
go mod init生成的 go.mod 文件就记录了项目中依赖的所有的第三方库,在后续开发中可以使用go mod tidy 进行依赖库的补齐,同时可以使用 go mod vendor 将公共库拷贝到项目的vendor目录下供本地开发,此处就不再赘述。
综上一个CTyunOS 3的Golang开发环境就准备好了,接下来可以在CTyunOS 3 上享受Golang的开发乐趣了。