文章《A Tour of Go》是官方文档,地址是https://tour.golang.org/welcome/1。
该文档在官方《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)。)
未完待续。
网友评论