版权声明:诸葛老刘所有 https://blog.csdn.net/weixin_39791387/article/details/87289608
本文适合初学者阅读
- 所谓引用类型(referece type) 特指slice, map, channel 这三种预定义类型.
- 相比数字, 数组等类型, 引用类型拥有更复杂的存储结构. 除分配内存外, 它们还须初始化一系列属性, 诸如指针, 长度, 甚至包括哈希分布, 数据队列等.
- 内置函数
new
按指定类型长度分配零值内存, 返回指针, 并不关心类型内部构造和初始化方式, 而引用类型则必须使用make
函数创建, 编译器会将make
转换为目标类型专用的创建函数, 以确保完成全部内存分配和相关属性的初始化.
package main
// import (
// ""
// )
func mkslice() []int {
s := make([]int, 0, 10) // 预定义一个类似于python的list, 长度为10
s = append(s, 100) // 添加一个元素 10
return s
}
func mkmap() map[string]int {
m := make(map[string]int) // 预定义一个类似python的字典, 初始化键为string, 值为int
m["a"] = 1 // 添加一个键值对
return m
}
func main() {
m := mkmap()
println(m["a"]) // 输出结果为1
s := mkslice()
println(s[0]) // 输出结果为:100
}
end