跳到主要内容

内置函数

如何按任务找到内置函数的学习入口?​

  • channel 长度: len(ch) 只表示缓冲区中尚未接收的元素数,不表示等待的 goroutine 数量,也不能据此判断是否已经完成通信;
函数描述
len返回 string, array, slice, map, channel 长度
cap返回 array, slice, channel 容量
make创建 slice, map, channel
newnew(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