Go 词条(188 条)
关键字
break立刻终止当前这层循环,像电梯里提前按下楼层出门,不再往上跑。
caseswitch 或 select 里的一个具体匹配项,像分拣格子上贴的邮编标签。
chan声明一个通道类型,像两个 goroutine 之间的单向传送带,只能传指定类型的货物。
const声明一个在编译期就钉死的值,像身份证上的出生日期,程序运行期间不能改。
continue跳过当前这一轮循环剩下的代码,直接进入下一轮,像吃瓜子时遇到坏的直接吐掉,继续剥下一颗。
defaultswitch 或 select 的兜底分支:当所有 case 都不匹配时执行,像选择题里的"以上都不是"。
defer把一句话先存进"离开前必做清单",函数 return 之前按后进先出顺序执行,像离开会议室时先关灯、再锁门(后说的先做)。
elseif 条件不成立时执行的退路,像外卖没点到就改吃泡面。
fallthroughswitch 语句里的贯穿指令:显式告诉程序继续执行下一个 case 的代码。
for反复执行一段代码,像洗衣机按设定次数重复漂洗,直到条件不满足才停下。
func给一段能反复干活的代码起个名字并打包,像洗衣机的一个固定洗涤程序,丢衣服进去就按流程执行。
go启动一个独立的轻量执行流和当前代码并肩跑,像餐厅里另开一条流水线同时煎蛋,主厨继续切菜不用等。
goto无条件跳转到同一函数内指定的标签位置继续执行。
if先判断条件,成立才执行分支里的代码,像红绿灯:绿灯亮才走,红灯亮就停。
import向别人借工具箱:把标准库或第三方包拉进当前文件,才能用里面的函数和类型。
interface列出一组方法签名作为"能力清单",任何类型只要实现了这些方法,就自动算这个接口,像考过驾照就能开车,不用额外申请。
map用键快速查值的数据结构,像查字典:给一个词(键),立刻翻到对应释义(值)。
package把文件装进同一个抽屉:同一文件夹里的 .go 文件必须声明同一个包名,告诉别人这份代码属于哪个部门。
range逐个翻开集合里的元素,像自动售货机一件件把商品推出来,同时告诉你它是第几个。
return把结果交回调用者并结束当前函数,像外卖骑手把餐送到后立刻返回店里。
select同时等待多个通道操作,哪个先就绪就执行哪个分支;如果都未就绪,有 default 则走 default。
struct把几个相关字段打包成一个自定义类型,像快递单上同时记录收件人、电话、地址。
switch把变量逐个对比多个分支,像投信分拣机按邮编把信件分到不同格子。
type给现有类型起个别名或造一个新类型,像给普通快递箱贴上"易碎品"标签,让类型系统帮你把关。
var给数据贴个名字标签,让后续代码能找到它,像给行李箱贴姓名牌。
内置功能
append往切片末尾追加元素;记住每次都要把返回值接回来(s = append(s, x)),因为装不下时它会换个大仓库,地址就变了。
cap返回切片的容量:从切片当前起点数到底层数组末尾能装多少个元素;像保温杯从当前水位到杯口的空间,不是当前装了多少。
clear清空映射里的所有键值对,或把切片的所有元素置为零值。
close关闭一个通道,表示不会再往里面发送数据;接收方可以检测通道是否已关闭。
complex用实部和虚部构造一个复数,返回 complex64 或 complex128。
copy把源切片的元素复制到目标切片,返回实际复制的元素个数。
delete从映射里删除指定的键;键不存在时也不会报错。
imag返回复数的虚部,类型与复数的实部/虚部类型一致。
len数集合里当前有几个元素,像收银员清点购物车里的商品数量。
make专门给切片、映射、通道"搭好骨架"并返回可用实例,像工厂按需生产出空货架。
max返回两个或多个有序值中的最大值。
min返回两个或多个有序值中的最小值。
new分配一块零值内存并返回它的地址(指针),像租一间空房并把钥匙交给你。
panic触发一个运行时严重错误,停止当前 goroutine 的正常执行并开始 panic 回溯。
print把参数输出到标准错误,参数之间不加空格,末尾也不换行;主要用于调试。
println把参数输出到标准错误,参数之间加空格,末尾自动换行;主要用于调试。
real返回复数的实部,类型与复数的实部/虚部类型一致。
recover捕获当前 goroutine 的 panic 并恢复执行,让程序不崩溃;必须放在 defer 里才有效。
true布尔类型的真值,表示条件成立。
false布尔类型的假值,表示条件不成立。
nil表示某些类型还没指向任何实际数据,像一把还没挂上钥匙的空钥匙扣。
iotaconst 声明块里的自动递增计数器:从 0 开始,每遇到一个新行就加 1。
any空接口 interface{} 的别名:可以保存任意类型的值。
bool布尔类型:只有 true 和 false 两个值,用于逻辑判断。
byteuint8 的别名:表示一个 8 位无符号字节,常用来处理原始二进制数据。
comparable类型约束:表示可以用 == 和 != 进行比较的类型,常用于泛型。
complex6464 位复数类型:实部和虚部各 32 位浮点数。
complex128128 位复数类型:实部和虚部各 64 位浮点数,是复数字面量的默认类型。
error内置错误接口:只要求一个 Error() string 方法,是 Go 错误处理的核心抽象。
float3232 位 IEEE 754 浮点数:占用 4 字节,精度比 float64 低。
float6464 位 IEEE 754 浮点数:占用 8 字节,是 Go 默认的浮点类型。
int有符号整数类型:大小由实现决定,32 位系统上为 32 位,64 位系统上为 64 位。
int88 位有符号整数类型,取值范围 -128 ~ 127。
int1616 位有符号整数类型,取值范围 -32768 ~ 32767。
int3232 位有符号整数类型,也是 rune 的别名,常用于 Unicode 码点。
int6464 位有符号整数类型,取值范围约 -9×10¹⁸ ~ 9×10¹⁸。
runeint32 的别名:表示一个 Unicode 码点,常用来处理单个字符。
string字符串类型:一串不可变的字节序列,按约定存放 UTF-8 编码的文本。
uint无符号整数类型:只存非负数,大小由实现决定。
uint88 位无符号整数类型,取值范围 0 ~ 255。
uint1616 位无符号整数类型,取值范围 0 ~ 65535。
uint3232 位无符号整数类型,取值范围 0 ~ 2³²-1。
uint6464 位无符号整数类型,取值范围 0 ~ 2⁶⁴-1。
uintptr无符号整数类型,长度足以保存任意指针地址,用于底层 unsafe 操作。
运算符
:=在函数内部一次性声明并赋值变量,编译器自动推断类型,像自助结账机扫完商品自动识别品类。
<-通道发送/接收运算符:ch <- v 表示把值 v 发送到通道 ch,v := <-ch 表示从通道接收一个值。
==相等比较运算符:判断左右两边的值是否相等,返回 bool。
!=不等比较运算符:判断左右两边的值是否不相等,返回 bool。
<小于比较运算符:判断左边是否小于右边,返回 bool。
>大于比较运算符:判断左边是否大于右边,返回 bool。
<=小于或等于比较运算符:判断左边是否小于或等于右边,返回 bool。
>=大于或等于比较运算符:判断左边是否大于或等于右边,返回 bool。
+加法运算符:两个数相加,或两个字符串拼接。
-减法运算符:两数相减;作为一元运算符时表示负数。
*乘法运算符:两数相乘;在类型前表示指针类型,在指针前表示解引用。
/除法运算符:两数相除;整数相除结果会截断小数部分。
%取模运算符:返回整数相除后的余数。
++自增运算符:把变量的值加 1,只能作为单独的语句使用。
--自减运算符:把变量的值减 1,只能作为单独的语句使用。
+=加并赋值运算符:先相加,再把结果存回左边变量。
-=减并赋值运算符:先相减,再把结果存回左边变量。
*=乘并赋值运算符:先相乘,再把结果存回左边变量。
/=除并赋值运算符:先相除,再把结果存回左边变量。
%=取模并赋值运算符:先取模,再把结果存回左边变量。
&&逻辑与运算符:两边都为 true 时结果才为 true,具有短路求值特性。
||逻辑或运算符:只要有一边为 true 结果就是 true,具有短路求值特性。
!逻辑非运算符:把 true 变成 false,把 false 变成 true。
&一元取地址运算符 &x 返回变量 x 的指针;作为二元运算符时表示按位与。
|按位或运算符:两个对应位中只要有一个是 1,结果位就是 1。
^按位异或运算符:两个对应位不同结果为 1;作为一元运算符时表示按位取反。
<<左移运算符:把整数二进制位向左移动指定位数,低位补 0。
>>右移运算符:把整数二进制位向右移动指定位数,高位补符号位或 0。
&^位清除运算符(AND NOT):把右操作数为 1 的位在左操作数中清零。
<<=左移并赋值运算符:先左移,再把结果存回左边变量。
>>=右移并赋值运算符:先右移,再把结果存回左边变量。
&=按位与并赋值运算符:先按位与,再把结果存回左边变量。
|=按位或并赋值运算符:先按位或,再把结果存回左边变量。
^=按位异或并赋值运算符:先按位异或,再把结果存回左边变量。
&^=位清除并赋值运算符:先位清除,再把结果存回左边变量。
符号
...三个点:在函数参数中表示可变参数;在调用时把切片展开成多个参数。
(左圆括号:用于包裹函数参数、分组表达式、控制条件等。
)右圆括号:与左圆括号配对,结束一个分组或参数列表。
[左方括号:用于数组/切片/映射的索引访问、切片表达式和类型声明。
]右方括号:与左方括号配对,结束索引、切片或类型声明。
{左花括号:开始一个复合语句或代码块,如函数体、if/for/switch 体。
}右花括号:与左花括号配对,结束一个复合语句或代码块。
;分号:语句结束符;Go 词法分析器会自动插入,一行多句时需要显式写出。
,逗号:分隔多个元素,如函数参数、多变量声明、多返回值、复合字面量字段等。
.点号:用于访问包的导出成员、结构体字段或方法,也称为选择器。
:冒号:用于标签、case 分支、键值对、类型断言,以及结构体字段标签等场景。
常用包
fmtGo 标准库里的格式化输入输出包:负责把数据打印到控制台、拼成字符串或从控制台读入,像程序和控制台之间的传话筒。
stringsGo 标准库里的字符串工具包:提供查找、分割、替换、大小写转换等常用字符串操作。
strconvGo 标准库里的字符串与数字转换包:在字符串和整数、浮点数之间做翻译。
osGo 标准库里的操作系统接口包:用于读取命令行参数、读写文件、操作环境变量、控制进程退出等。
errorsGo 标准库里的错误构造包:用来创建简单的 error 值,是 Go 错误处理的基础工具。
timeGo 标准库里的时间和时长包:获取当前时间、测量耗时、让协程睡眠、解析和格式化时间。
mathGo 标准库里的数学函数包:提供平方根、绝对值、幂运算、三角函数、圆周率等常用数学运算。
randGo 标准库里的伪随机数包:生成整数、浮点数等随机值,像掷骰子。
sortGo 标准库里的排序包:对切片按升序原地排序,或自定义比较规则。
logGo 标准库里的日志包:比 fmt 多了时间戳,适合记录程序运行状态和致命错误。
jsonencoding/json 包的简称:负责把 Go 值编码成 JSON 字节,或把 JSON 字节解码成 Go 值。
syncGo 标准库里的并发同步包:提供互斥锁、等待组、原子操作等工具,防止多个 goroutine 抢资源打架。
httpnet/http 包的简称:既能发起 HTTP 请求当客户端,也能注册路由、监听端口当服务器。
包功能
通用兜底
字符串双引号字符串字面量:一串不可变的 UTF-8 文本。
数字数字字面量:整数或浮点数的直接写法。
注释单行注释:从 // 到行尾的内容,编译器会忽略。
块注释块注释:用 /* */ 包围的多行注释,编译器会忽略。
变量变量名:用来指代一块数据的标识符,:= 可在函数内声明并初始化。
函数调用函数调用:写出函数名和参数,让函数执行并返回结果。
方法方法调用:某个类型值上的函数,格式为 值.方法名(参数)。
属性结构体字段(属性):通过 结构体变量.字段名 访问其中的一项数据。
缩进代码缩进:Go 官方格式化工具 gofmt 使用 tab 进行缩进,IDE 可配置显示宽度。
运算符运算符兜底:当前未被单独收录的运算符,根据上下文执行算术、比较或位运算。
打开代码点读机,粘贴代码点词即查 →