go引用类型

—————— 
引用类型(reference type)特指slice、map、channel这三种鱼定义类型
引用类型拥有复杂的存储结构。包括分配内存,初始化属性:指针、长度、哈希分布、数据队列等。使用make函数创建

func mkslice() []int {
	s := make([]int, 0, 10)
	s  = append(s, 100)
	return s
}

func mkmap() map[string]int {
	m := make(map[string]int)
	m["a"] = 1
	return m
}

func main() {
	m := mkmap()
	println(m["a"])

	s := mkslice()
	println(s[0])
}
输出

—————— new函数也可以为引用类型分配内存,但不是完整创建,没有分配键值存储内存、初始化散列桶等内部属性,无法正常工作
func main() {
	p := new(map[string]int) #函数new返回指针
	m := *p
	m["a"] = 1 #panic:assignment to entry in nil map(运行期错误)
	fmt.Println(m)
}

—————— 

猜你喜欢

转载自blog.csdn.net/Haka36/article/details/87915815