Golang内置函数make

make可以用来为 slice,map 或 chan 类型分配内存和初始化一个对象,注意只能用于这三种类型。

slice

a := make([]int, 5, 10)
a[1]=2
fmt.Println(a)

make函数的第一个入参为slice的类型,第二个入参为slice的初始长度,第三个入参为slice的预留长度(可以省略)。
如果slice的预留长度存在,则会为make生成的对象预留一整块连续的内存,这样对slice扩充时,cpu运行的成本较低。
如果slice的预留长度不存在,则slice每次append时,都要重新申请不连续的内存,cpu运行成本较高。
对slice进行append时,超出了原本的长度,可以运行,但是内存不连续。
PS:append后对象的cap并不是+1,详见golang内存分配。

map

a := make(map[int]string)
	a[0] = "test"
	a[2] = "action"
	fmt.Println(a)

chan

详见go多协程编程。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值