可变参数函数是一种 参数个数可变 的函数。如果函数最后一个参数的类型被记作 ...T
,这时函数可以接受任意个 T
类型的参数作为最后一个参数。只有 函数的最后一个参数才允许是可变的。
可变参数函数的 工作原理 是把可变参数转换为一个新的 切片。
有一个可以直接将切片传入可变参数函数的语法糖,你可以在切片后加上 ...
后缀。这样切片将直接传入函数,不再创建新的切片。
1 | func find(num int, nums ...int) { |
map 是在 Go 中将值(value)与键(key)关联的 内置类型。通过相应的键可以获取到值。
通过向 make
函数传入键和值的类型,可以创建 map。make(map[type of key]type of value)
是创建 map 的语法。如:personSalary := make(map[string]int)
。
map 的零值是 nil
。如果你想添加元素到 nil map 中,会触发运行时 panic
。因此 map 必须使用 make
函数初始化。
1 | func main() { |
1 | personSalary := map[string]int { |
获取 map 中的元素:map[key]
。如果获取一个不存在的元素,map 会返回 该元素类型的零值(如:[]T
返回 nil
,整形返回 0
)。
如何判断某个 key 是否存在于 map 中:value, ok := map[key]
,如果 ok 是 true,表示 key 存在,key 对应的值就是 value ,反之表示 key 不存在。
遍历 map 中所有的元素需要用 for range 循环:for key, value := range personSalary {//... }
。当使用 for range 遍历 map 时,不保证每次执行程序获取的元素顺序相同。
删除 map 中的元素:delete(map, key)
,无返回值。
获取 map 的长度:len(map)
。
和 slices 类似,map 也是 引用类型 :当 map 被赋值为一个新变量的时候,它们指向同一个内部数据结构。因此, 改变其中一个变量,就会影响到另一变量。当 map 作为函数参数传递时也会发生同样的情况,函数中对 map 的任何修改,对于外部的调用都是可见的。
map 之间不能使用 ==
操作符判断,==
只能用来检查 map 是否为 nil。
学习链接:https://studygolang.com/subject/2,感谢如此优秀的教程!