内置函数
如何按任务找到内置函数的学习入口?
- channel 长度:
len(ch)只表示缓冲区中尚未接收的元素数,不表示等待的 goroutine 数量,也不能据此判断是否已经完成通信;
| 函数 | 描述 |
|---|---|
len | 返回 string, array, slice, map, channel 长度 |
cap | 返回 array, slice, channel 容量 |
make | 创建 slice, map, channel |
new | new(T) 创建 T 的零值并返回指针 |
append | 追加 slice 元素 |
copy | 复制 slice 元素 |
delete | 删除 map key |
close | 关闭 channel |
clear | 清空 map 或将 slice 元素置零 |
complex | 根据实部和虚部构造复数 |
real | 返回复数实部 |
imag | 返回复数虚部 |
min | 返回一组有序值中的最小值 |
max | 返回一组有序值中的最大值 |
panic | 触发 panic |
recover | 捕获正在传播的 panic |
print / println | 输出实现相关调试信息 |
如何组合使用内置函数?
- 组合顺序: 先初始化容器,再执行操作,最后读取结果;这里
make预留容量、append增加长度,len与cap分别观察两种边界;
func main() {
s := make([]int, 0, 4) // make 创建 slice
s = append(s, 1) // append 返回新 slice
println(len(s), cap(s))
}
clear 如何清理 slice 与 map 的内容?
- clear 的两种效果: slice 保留长度并把元素归零,map 删除全部键;nil slice 与 nil map 也可以调用 clear;
s := []int{1, 2}
m := map[string]int{"go": 1}
clear(s)
clear(m)
println(len(s), s[0], len(m)) // 2 0 0