在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
看起来二者没有什么区别,都在堆上分配内存,但是它们的行为不同,适用于不同的类型。
换言之,new 函数分配内存,make 函数初始化;下图给出了区别:
如何理解new、make、slice、map、channel的关系 1.slice、map以及channel都是golang内建的一种引用类型,三者在内存中存在多个组成部分, 需要对内存组成部分初始化后才能使用,而make就是对三者进行初始化的一种操作方式 2. new 获取的是存储指定变量内存地址的一个变量,对于变量内部结构并不会执行响应的初始化操作, 所以slice、map、channel需要make进行初始化并获取对应的内存地址,而非new简单的获取内存地址 |
请发表评论