文章《A Tour of Go》是官方文档,地址是https://tour.golang.org/welcome/1。
该文档在官方《Go Documentation》系列文档中的位置如图所示。

Go Documentation
以下是我的学习笔记。
Packages, variables, and functions
- 按约定,包名是导入路径的最后一个元素
- 可分组导入,也可以单独导入
- 大写开头的名称,属于导出名称,外部可见;小写名称外部不可见;👍
- 声明时,类型在变量名后
- 多返回值
- 返回值命名,空返回语句👍
- var声明变量,可在包级别和函数级别使用
- var声明变量时初始化
-
:=缩写在函数内可用,包内不可用 - 基本类型
- 零值,变量声明但不初始化,会默认赋值对应类型零值
- 数值类型赋值
0 - 布尔类型赋值
false -
string类型赋值""
- 数值类型赋值
- 不同类型赋值,必须显式类型转换
- 类型推断(
%T可以输出变量类型) - 常量不可用
:=一块声明 - 数值常量是高精度的;未指定类型常量按需分配类型
Flow control statements: for, if, else, switch and defer
- Go只有一种循环控制:For
- 无小括号;大括号必需;
- For的初始化表达式(init)和后执行表达式(post)都是可省略的
- 以上场景
;也可省略,省略后成为while循环 - 三个表达式均省略,则成为一个死循环
-
if格式同for:无小括号;大括号必需; -
if表达式前可以执行简短的语句,其间声明的变量仅在if内有效 -
if里声明的变量在其后所有对应的else里也有效 - 练习使用循环实现
sqrt函数 -
switch每个分支默认都是break的,除非显式使用fallthrough👍 -
switch的分支测试语句,从上往下执行,遇到匹配则后续不再执行 -
switch的条件语句如果省略,相当于switch true,可用来代替多路的if-then-else,更干净更清爽 -
defer语句的参数表达式一开始就执行,但是函数调用会在主函数返回后才执行 - 多个
defer语句会被压栈,主函数返回后按先进后出逐个执行(扩展阅读可参考Go Blog文章Defer, Panic, and Recover(链接地址https://blog.golang.org/defer-panic-and-recover)。)
未完待续。