make的使用

make使用在slice,map,chan这三种数据类型上面,用来分配和初始化这三种数据类型

1、slice使用make

slice使用了make设置了大小实际上是在slice里面添加了len个空数据(数据值和类型默认值相同),如果append就相当于在后面添加了新的元素

func main() {
	//1、初始化一个切片,不指定容量时则容量默认和长度一样
	arr := make([]int, 10)
	fmt.Println("长度为:", len(arr), "内容为:", arr, "容量为:", cap(arr))

	arr = append(arr, 1)
	fmt.Println("长度为:", len(arr), "内容为:", arr, "容量为:", cap(arr))

	//2、初始化一个指定长度和容量的切片
	arr1 := make([]int, 10, 20)
	fmt.Println("长度为:", len(arr1), "内容为:", arr1, "容量为:", cap(arr1))
}

结果:

长度为: 10 内容为: [0 0 0 0 0 0 0 0 0 0] 容量为: 10
长度为: 11 内容为: [0 0 0 0 0 0 0 0 0 0 1] 容量为: 20
长度为: 10 内容为: [0 0 0 0 0 0 0 0 0 0] 容量为: 20

使用append往slice里面加元素时,如果长度大于初始容量,这时切片就会发生扩容,一般会扩容到原来的两倍!

2、map使用make

map在使用make的时候,就算指定了len,也是不起作用的,这个len起不到限制的作用

func main() {
	//1、初始化一个不指定len的map
	arr := make(map[int]string)
	fmt.Println("长度为:", len(arr), "数据为:", arr)

	//2、初始化一个指定len的map
	arr1 := make(map[int]string, 5)
	fmt.Println("长度为:", len(arr1), "数据为:", arr1)
}

结果:

长度为: 0 数据为: map[]
长度为: 0 数据为: map[]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值