Golang中new和make的区别
来源:互联网 发布:淘宝恒天然wpc80分装 编辑:程序博客网 时间:2024/06/07 10:02
new会分配结构空间,并初始化为清空为零,不进一步初始化
new之后需要一个指针来指向这个结构
make会分配结构空间及其附属空间,并完成其间的指针初始化
make返回这个结构空间,不另外分配一个指针
例子new:
var p *[]int = new([]int)
或
p := new([]int)
以上分配了一个slice结构,但是结构中的应该指向底层数组的ptr指针为空,故实际不能往这个slice里面存取数据
同时分配了一个指针p,也即(在32位系统中)占4个字节并存放slice结构的地址
例子make:
var v []int = make([]int, 0)
v := make([]int, 0)
以上分配了一个slice结构,且结构中的应该指向底层数组的ptr指针已经指向了某个底层数组,这个底层数组应该已经分配了,故这个slice已经可以使用了
注意v就是这个slice结构,而不是一个指向slice的指针
上述仅是示例,一般使用时都会明确长度和容量:v := make([]int, 10, 50)
结论:
由上可见,用new来分配slice的意义不大,因为没有恰当的初始化,无法直接使用
有附带空间的结构,使用make来初始化,可以完成内部指针初始化,其后可以立即使用
0 0
- Golang中new和make的区别
- Golang中new和make的区别
- Golang中new和make的区别
- golang中make和new的区别
- golang中new和make区别
- Golang中make与new的区别
- golang中new和make简析
- go中new和make的区别?
- go中new和make的区别
- go 中 make 与 new 的区别
- golang new和make学习笔记
- Go中的make和new的区别
- Go new和make的区别
- golang-new与make
- golang new与make
- golang make & new
- golang 内置函数new() 和struct{} 初始化的区别
- new与make的区别
- 常用git操作备忘
- linux中文件描述符fd和文件指针flip的理解
- 【翻译搬运】一个基于css3的图片轮换程序
- git学习总结(四)
- hadoop2.6.0 完全分布式安装
- Golang中new和make的区别
- 理解Go语言中的函数闭包
- Filter过滤顺序
- iOS9微信QQ微博SDK需要在plist加的字段
- javascript 函数详解
- 关于Vim的使用:如何更改默认字体和取消自动备份
- .NET伪静态配置方法(其一)
- 1.2 日期函数
- 关于SOCKET 接收发送 缓冲区 测试 SO_SNDBUF