1.new和make的区别?
- 相同点:
- new和make都是用来开辟空间的
- 不同点:
- new是初始化一个类型的指针,返回的是类型指针,而里面的值为默认初始值,只对值类型有效
- make是针对slice切片,map字典,chan管道初始化,并且返回对应的初始值
- 并非返回指针,而是对应的类型有效值
2.数组和切片的区别
- 相同点:
- 都是一系列用来存放对应数据的集合
- 不同点:
- 基本:
- 数组不可改变,定义后只能修改,无法增删
- 切片可以进行后续操作改变
- 语法定义:
- 数组的语法为: var arr [10]int
- 切片的语法为: var arr []int
- 类型:
- 数组:值类型,进行函数传递值时,通常是值传递,拷贝一份后进行操作
- 切片:引用类型,函数操作时,针对传递指针进行操作
- 空间大小:
- 数组:数组大小为初始值时,默认的长度以及类型进行开辟空间
- 切片:切片大小默认为24。这是因为切片的结构体只存放三个3个变量
- 指针,长度,容量
- 切片可以进行增删值,当超出现有容量后,会在1024容量内进行翻倍,超出后则每次增加1/4
- 基本:
网友评论