Go 语言入门笔记(一):从零搭环境到跑通第一个程序
最近因为项目里开始用 Go 写一些高并发的服务,再加上面试的时候发现不少岗位都要求“熟悉 Go 语言”,索性就趁这个机会从头系统地学一遍。输出倒逼输入,边学边记,这系列笔记就当是我的公开学习日志了。第一篇就从最基础的环境搭建开始,目标是跑通一行Hello, World。
1. 装 Go:省心的方法和踩过的坑
1.1 官方下载(推荐)
直接去 Go 官网的下载页面下载对应系统的安装包,目前最新稳定版是 go1.22。Windows 下双击.msi一路下一步就行,Mac 可以用.pkg,Linux 下直接解压tar.gz放到/usr/local。
我当时图省事在 Ubuntu 上直接apt install golang-go,结果版本巨老,连 modules 支持都不太完善,后来又乖乖去官网下了二进制包。建议一定用官方渠道,版本至少 go1.18 以上,因为后面讲的泛型、工作区这些新特性老版本根本不支持。
1.2 环境变量到底怎么设
装完之后,安装程序一般会自动把 Go 的 bin 目录加到PATH里,没加的话可以手动加一下:
# 类 Unix 系统加到 ~/.bashrc 或 ~/.zshrc export PATH=$PATH:/usr/local/go/bin然后聊几个容易迷糊的环境变量:
- GOROOT:Go 语言的安装路径。现在基本不用手动设了,Go 自己知道。
- GOPATH:老版本里必须设的工作目录,现在有了 Go Modules 之后,这个变量更多是用来存放
go get下载的依赖和工具,一般默认为~/go。
验证一下安装成果:
go version go env GOROOT GOPATH GOPROXY输出版本号和路径就没问题了。
2. 第一个程序:Hello World 的正确打开方式
2.1 新建项目目录
习惯用 Modules,所以不会像以前那样必须在$GOPATH/src下创建代码。随便找个地方,新建个文件夹就行。
mkdir hello-go && cd hello-go2.2 初始化模块
虽然不是必须的,但我建议从一开始就用 module 管理,哪怕只有一个文件。
go mod init hello这会生成一个go.mod文件,内容很简单:
module hello go 1.222.3 写代码
新建main.go:
package main import "fmt" func main() { fmt.Println("Hello, 世界") }2.4 跑起来
两种方式:
go run main.go:编译并运行,适合开发调试,但会留下临时文件。go build:生成可执行文件(Linux 下是hello,Win 下是hello.exe),再运行。
第一次跑看到控制台打出Hello, 世界的时候,有种重新学编程的奇妙兴奋感。
3. 这五行代码到底干了啥
老鸟可以跳过,新手朋友建议瞄一眼:
package main:定义一个主包,可执行程序必须叫main包。import "fmt":导入格式化 I/O 包,用来打印东西。func main():程序的入口函数,没有参数,没有返回值,必须是main包的main函数,和 C 一样。fmt.Println:打印一行,自动加换行。大写字母开头的函数才能被外部使用,也就是“导出”规则,这个后面会反复提到。
这里有个我当时犯的傻:把文件名起成了main_test.go,结果go run死活不认,因为 Go 把_test.go结尾的文件当成测试文件了。
4. 下一步学什么
环境好了,程序也跑通了。下一章准备梳理 Go 的变量声明那套“反直觉”的语法,什么var、:=、多变量赋值这些,特别是和 C/Java 习惯打架的地方,我会把踩坑过程记下来。
如果这篇文章对你有帮助,欢迎点赞收藏,也欢迎在评论区纠正我理解不到位的地方,一起扎实学下去。
