前言

2017年,简单的学习了一下Go语言,但苦于当时的工作没有办法实践,而我又刚换了工作,每天都要加班到最后一班地铁,没多久,学习的内容就基本上忘光光了,今年得空,可以在学习下Go语言,手头上也有两个项目有时间去重构,那就重新学习一次吧。本次学习使用go 1.26版本。

Go语言介绍

Go语言由Google开发,对于程序开发效率、并发、云原生等有非常好的支持。对于Java程序员来说,学习起来非常容易。

  • 核心特性:天然并发(Goroutine)、强类型、编译速度极快、垃圾回收(GC)、静态链接成单个可执行二进制文件。
  • 适用场景:云原生开发(Docker/K8s 均由 Go 编写)、微服务、系统工具、高性能网络服务。

GOROOT和GOPATH

对于Go新手还是有必要明确下这两个环境变量的含义,不然很容易纯靠字面意思搞错。

GOROOT,就是Go SDK的安装路径,不是go语言的项目路径,对于Java程序员来说,就是JDK的路径。

GOPATH,工作区路径,类似于Eclipse+maven的组合,将workspace和.m2合并在一个目录。最开始用起来老别扭了,不过从Go 1.11以后,就进入Go Modules时代。将GOPATH理解为maven的仓库,里面存放了不项目的不同依赖(以及同一个库的多个版本),Go Modules则负责隔离,每个项目可以存放在任意目录,并且根目录下有一个go.mod文件,记录该项目具体以来那个版本的库。

安装配置Go

对于Windows,推荐使用Scoop来安装管理

1
scoop isntall go
1
2
3
4
# 对于使用brew的用户
brew install go
# 对于使用port的用户
port install go
1
2
wget https://go.dev/dl/go1.26.1.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.26.1.linux-amd64.tar.gz

安装完成后,执行go version,如果能正确输出go版本号,那就说明安装成功(以上三种方式都不需要单独设置环境变量,其他方式请自行配置)。下面配置Go env,以Windows为例:

1
2
3
4
5
6
GOROOT=D:\Scoop\apps\go\current
GOPATH=D:\devtools\go

# 启用go module
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct

除非你有特殊的目录洁癖,否则保持 GOBIN 为空,只需确保将 $(go env GOPATH)/bin 加入系统 PATH 即可。

对于新手最容易混淆的地方:

  • go build:在当前目录生成二进制文件。它不受 GOBIN 影响。
  • go install:将二进制文件编译并移动到 GOBIN(或默认的 bin)目录下。

配置完成后,执行go env查看是否正确。

编辑器选择

VS Code

对于喜欢轻量级的开发者来说,VS Code是最佳选择,使用VS Code开发Go,只需要安装go插件即可。安装完成后Ctrl + Shift + P,输入Go: Install/Update Tools,全选并安装,它会提供自动补全调试等功能。按下F5即可调试程序,或者安装Code Runner插件,亦或者是在命令行中执行go run .

GoLand(推荐)

由于我是Jetbrains的全家桶套餐订阅者,所以我更偏向于Goland,用起来更顺手。