go 入门开篇
如果编程的世界是海贼王里的"大航海时代", go 语言可能就是"草帽海贼团"
1. 要去学 Go 了
学习和使用 Python 有三四年,好想学一门新语言,打算学 Go。为什么是 Go,其实更想学 Rust。但是 Go 有谷歌这个大佬,背靠k8s,显然学 Go 好处大大的。其实也无所谓,哪天想学 Rust,就拿来看看对比着学可能更快。当然学 Go 还有另一个重要原因,想转运维开发。
2. 怎么学 Go
因为已经不是第一次学编程了,之前也看过一段时间 C,想看看在学习了编程这么长时间之后,在编程领域的学习能力相比于一开始有没有提升。所以这次打算从语言特性的角度出发,有目的性的对比学习,看看能不能以更快的速度学好 Go。下面是我能想到知识面:
- 基础语法,包括变量,循环,判断以及运算符
- Go 语言提供的基本数据结构
- 异常处理
- 函数,类与泛型
- 并发编程
3. 学习资料
书选的《Go程序设计语言》,在写博客之前已经翻过一遍,的确是一本可以拿来入门的好书。
4. 环境搭建
在学习 Go 语言之前,最重要的是搭建一个 Go 的开发环境。为了对 Go 有一个更好的整体把握,对于这个开发环境我们至少完成下面这些任务。下面涉及的 Go 专业术语,后面会详细解释,为了便于理解,我简单的跟 Python作了一个对比
- 安装 Go,搭建基本的go开发环境 – python 安装
- Go 语言工具箱,特别是 go 程序包的查询,下载和管理 – pip 的使用
- Go 语言的工作目录 – 模块的搜索路径
- IDE 编程环境
我们主要讲解 Linux 下的环境搭建,Windows 的搭建类似。我们使用 VScode 作为我们的IDE,没其他原因,因为大佬们都推荐。
4.1 Go 安装
Go 语言官方文档有完整的安装文档,Linux 下可直接运行下面的 bash 脚本,而唯一需要修改的是最后三个环境变量的配置。其中
- PATH: 用于将 go 命令添加到环境变量的命令搜索路径中,便于直接使用 go 命令
- GOPATH: 用于指定 go 的工作区,可以是单个目录路径,也可以是冒号分割的多个路径
- GOBIN: 用于指定 GO 程序生成的可执行文件(executable file)的存放路径
先让你的 Go 可以运行起来,别的不用着急,马上我们就会讲解环境变量的作用,在你理解这些环境变量的含义之后就可以按需修改。
|
|
4.2 Go语言工具箱
在 go 安装完毕之后,在 go 安装目录的 bin 子目录下会有一个 go 命令(默认为/usr/local/go/bin
),这就是 go 语言提供给我们的管理工具箱,它是一系列功能的集合:
- 首先它是一个构建系统,计算文件的依赖关系,然后调用编译器、汇编器和连接器构建程序
- 其次它是一个包管理器(类似于python pip),用于包的查询、下载、依赖关系解决。
- 最后它是一个单元测试和基准测试的驱动程序
go 命令的执行依赖很多环境变量,使用 go env
可以查看所有的环境变量,大多数环境变量在 go 语言正确安装之后(主要是选择与操作系统匹配的安装包)会自动配置,唯一需要用户配置是GOPATH,用于指定go 语言的工作区,工作区是 go 语言中的一个核心概念,Go 语言项目在其生命周期内的所有操作(编码、依赖管理、构建、测试、安装等)基本上都是围绕着 GOPATH 和工作区进行的。
4.3 Go 工作区
GOPATH对应的工作区目录有三个子目录:
- src 子目录用于存储源代码,使用
go get
下载的 go 包和自定义的 go 程序源代码都存在此目录中,同时也是代码包搜索和导入的启始根目录 - pkg子目录用于保存编译后的包的目标文件
- bin子目录用于保存编译后的可执行程序
go build命令编译命令行参数指定的每个包。如果
src
使用命令 go get可以下载一个单一的包或者用 …下载整个子目录里面的每个包。go get
会自动下载所依赖的每个包
4.3 GOROOT
环境变量GOROOT用来指定Go的安装目录,还有它自带的标准库包的位置。GOROOT的目录结构和GOPATH类似,因此存放fmt包的源代码对应目录应该为$GOROOT/src/fmt
。用户一般不需要设置GOROOT,默认情况下Go语言安装工具会将其设置为安装的目录路径。
下面是我当前工作区目录的示例:
|
|
你可以运行go或go help命令查看内置的帮助文档,为了查询方便,我们列出了最常用的命令
|
|
4.3 Go 环境变量
GOPATH对应的工作区目录有三个子目录。
与 Python 不同的是,Go 的包不是通过镜像的方式,而是直接从远程版本控制系统(eg: githup)直接下载的,因此当我们使用标准的 go get
下载Go包时,可能会由于不可描述的原因失败。因此我们必须手动解决一些包的安装问题。
4.2 Vscode 安装
在Vscode官网 下载与你系统时配的安装包,安装即可。安装完成后在 VScode Extension 安装与 go 相关的扩展,如下图所示: