360 字
2 分钟
go的make函数
Make()函数
make函数简单来说就是为引用对象在内存中开辟一块存储空间来存储数据。
IMPORTANT引用对象声明时并不会分配空间,只有使用make/new函数进行分配。当没有空间时进行数据赋值,就会发生
panic
在GO中有哪些引用对象呢?
- 切片 Slice
- map
- 管道 channel
- 指针 pointer
make函数的作用对象是切片、map、管道, 而指针的空间由new进行分配
切片
对于切片,make()接受三个参数:
- 切片类型
- 长度
- 容量
参数说明
- 长度: 切片初始化时切片包含的元素个数,元素值为类型默认值
- 容量: 切片底层数组最大能够容纳元素的数, 所以 容量 >= 长度, 如果实际元素数大于设定容量,容量会翻倍
- 当省略容量时, 容量 = 长度
map
对于map,函数只接受两个参数:
- map类型
- 容量
参数说明
- 容量: 如果设定了预估容量, 可以很好的提升性能,当然这个容量不是限定死的,如果实际容量大于预估容量,会扩容(x2)。
管道channel
对于管道,make()接受三个参数:
- 切片类型
- 缓冲大小
参数说明
- 缓冲大小:
- 如果省略: 表示没有缓冲,该管道为同步管道
- 如果不省略: 表示有缓冲, 缓冲大小为设定值
部分信息可能已经过时










川公网安备51011402000992号