Go语言是Google主导开发的一款开源的静态类型编程语言,Go可以直接编译为二进制程序在操作系统上执行,而不需要额外安装运行时环境,Go编译器对跨平台的交叉编译支持也十分到位,对工程部署十分友好。
和C/C++不同的是,Go具有自动的内存管理机制,Go会将相关的运行时逻辑静态编译到可执行文件中。Go语言的另一个特点是其简洁的语法和现代、完善、没有太多历史包袱的标准库,Go语言上手学习很快,完美符合“Keep it simple and stupid”的Unix哲学。
Go语言最初于2009年发布,如今很多项目都是采用Go语言开发的,比如我们熟知的etcd、Docker、K8s等。不仅如此,我接触的很多开发者都会使用Go语言写一些个人的小项目,这些小项目大多轻巧高效,给人留下了非常好的印象。
从使用者的角度看,Go语言开发的程序巧妙的折衷了几个其它语言的痛点:
当然Go也有一些缺点:
目前Ubuntu源中,Go语言开发包的版本更新比较滞后,Go官网文档中也没提从源中安装,而且直接下载预编译版本安装也是非常简单的。我这里安装的是当前最新的1.19.2版本。我们可以从这个页面找到当前最新版本的Go语言环境:https://golang.org/dl/
# 下载Go语言开发包
wget https://go.dev/dl/go1.19.2.linux-amd64.tar.gz
# 解压
tar xvf go1.19.2.linux-amd64.tar.gz
# 将解压得到的文件夹放到 /usr/local目录
sudo mv go /usr/local
# 设置环境变量
export PATH=$PATH:/usr/local/go/bin
注意:export
只是让环境变量在当前shell中生效,也可以设置到~/.bashrc
或/etc/profile
使其在当前用户或全局生效。
同样在之前的网址找到Windows版本的安装包,这里我下载的是go1.19.2.windows-amd64.msi
,直接双击安装即可。安装完成后,环境变量已经为我们自动设置好了,如果不确定也可以自己手动查看下。
此外,我们也可以直接下载.zip
包并解压,然后手动配置环境变量。
类似于UnixC开发的GNU工具链,Go语言开发也有一套完善的命令行工具,安装好Go SDK后,它们都集成在go
命令中,我们直接输入go
命令即可看到相关提示。
如果需要单独查看某个选项的帮助,可以使用类似go help <选项>
。
Go语言没有太过复杂的运行时环境设置,这里我们以Linux环境为例进行介绍。我们可以像C语言一样,用vim直接开始写,并以最简单的单文件方式编译执行。Go语言源代码文件一般用.go
作为后缀名。
hello.go
package main
import "fmt"
func main() {
fmt.Printf("Hello, world!\n");
}
上面代码很简单,和大多数语言语法都差不多。执行以下命令编译运行。
go build hello.go
./hello
上面编写了一个.go
单文件并编译运行,看起来非常简单,但实际开发时情况通常要复杂一点。我们知道项目构建和依赖管理是个比较复杂的过程,Go语言工程如何管理源代码和程序库,这些内容将在下一节介绍。