go中make、new和直接var的区别
文章目录
- 直接var
- make
- new
- 小结
直接var
func main(){var sli []intfmt.Println(sli) // 打印结果为:[]fmt.Println(len(sli)) // 打印结果为:0fmt.Println(cap(sli)) // 打印结果为:0fmt.Println(sli[0]) // panic: index out of range [0] with length 0
}
此时sli只分配了这个切片结构,还没有分配底层数组,存储元素个数为0
,容量也为0
make
var sli []int = make([]int,2,5)
此时make
不仅会为sli分配这个切片结构,还会开辟一段内存作为sli的底层数组,并将底层数组的值初始化为整型的默认值0
向sli中新增一个元素3
var sli []int = make([]int,2,5)
sli = append(sli,3)
注意:make只能用来为slice、map、channel类型分配内存和初始化一个对象
new
func main(){sli := new([]int)fmt.Println(*sli) // 打印为:[]fmt.Println(len(*sli)) // 打印为:0fmt.Println(cap(*sli)) // 打印为:0fmt.Println((*sli)[0]) // panic: index out of range [0] with length 0
}
此时new
会为sli指向一个没有分配底层数组的切片结构,存储元素个数和容量都为0
小结
- make既分配内存,也初始化内存。new只是将内存清0,并没有初始化内存
- make返回的是引用类型本身。new返回的是指向类型的指针
- make只能用来分配及初始化slice、map、channel。new可以分配任意类型的数据
go中make、new和直接var的区别相关推荐
- Ubuntu中Could not get lock /var/lib/dpkg/lock解决方案
关于Ubuntu中Could not get lock /var/lib/dpkg/lock解决方案 转载于:https://www.cnblogs.com/daemonFlY/p/10916812. ...
- JS中 let 和var的区别
JS中let和var 的区别 简单介绍let var的常见变量提升 ES6可以用let定义块级作用域变量 let配合for循环的独特应用 let没有变量提升与暂时性死区 let变量不能重复声明 简单介 ...
- 在Javascript中 声明时用var与不用var的区别,== 和 ===的区别
今天,被问到两个JS问题,当时没回答到重点,问题虽然看起来简单,但是细节却马虎不得,在此做下记录: 1. 在Javascript中 声明时用"var"与不用"var&qu ...
- uniapp 获取到js文件var一个变量怎么获取到这个变量值_浅析Js中const,let,var的区别及作用域...
理解:let变量的作用域只能在当前函数中 js中const,let,var的区别及作用域_lianzhang861的博客-CSDN博客blog.csdn.net 全局作用域中,用 const 和 l ...
- javascript中let和var的区别
let是es6中新增命令,也是用来声明变量的,可能很多小伙伴都像我一样,定义变量的时候都会用var而很少用到let,那么,let和var到底有什么区别呢? let和var的区别体现在作用域上.var的 ...
- JDK8-JDK17中的新特性(var类型推断、模式匹配、Record、密封类)
文章目录 1. 新语法结构 1.1 Java的REPL工具: jShell命令 1.2 异常处理之try-catch资源关闭 1.3 局部变量类型推断 1.4 instanceof的模式匹配 1.5 ...
- html5有foreach吗,JavaScript中的map()和forEach()有什么区别?
来源:https://medium.com/better-programming,作者:Moon,翻译:公众号<前端全栈开发者> JavaScript中一些最受欢迎的功能可能是map和fo ...
- [译]JavaScript中的属性:定义和赋值的区别
原文:http://www.2ality.com/2012/08/property-definition-assignment.html 你知道吗?定义一个属性和为一个属性赋值是有区别的.本文解释了两 ...
- 在React / React Native中使用构造函数与getInitialState有什么区别?
本文翻译自:What is the difference between using constructor vs getInitialState in React / React Native? I ...
最新文章
- redis源码之sds
- 在Oracle 11g中用看Oracle的共享内存段---------IPCS
- 如何优雅的激怒C/C++程序员
- 业余爱好者linux_如何从业余爱好者变成专业开发人员
- (转)女生应该找一个玩ACM的男生
- 数据库事务的概念及其实现原理
- hdu 1872 稳定排序
- 犯病的chorme(谷歌浏览器)之css加载失败
- react生命周期(自己的方式理解)
- SAP License:财务帐与后勤不一致情况
- python循环套循环,零基础学python 14 循环套循环:循环的嵌套(课后习题)
- python定义模块结束语_python-模块定义、导入、优化
- 怎么打开/查看MySQL的SQL记录
- linux如何检查进程,如何在Linux中检查进程的执行时间
- 华为裸金属服务器 虚拟化性能下降,服务器虚拟化 配置
- Linux 命令整理-tailf
- PDF怎么转换成Word文字
- 3个重点,20个函数分析,浅析FFmpeg转码过程
- HTML基础_3_HTML元素周期表
- 2017-9-13 NOIP模拟赛[xxy]
热门文章
- HDFS DataNode 设计实现解析
- android 类ios actionsheet效果
- Oracle RAC更改VIP IP地址_2节点的实验
- Study on Android【五】--自定义ContentProvider的语义
- php datediff 函数,dateAdd与DateDiff函数的js代码
- rabbitmq可靠性投递_阿里Java研发二面:了解RabbitMQ?说说RabbitMQ可靠性投递
- 四参数拟合曲线_每周放送|曲线拟合
- python桌面开发吐血_想用java写个桌面小demo,就布局都差点写吐血了,学艺不精...
- php 链接远程oracle,PHP连接远程oracle输出数据
- MS的完整形式是什么?