• [go]new和make开辟内存


    var申明取址和new效果一样

    • 值类型

    • 引用类型

    make和new的区别

    内置函数new按指定类型长度分配零值内存,返回指针,并不关心类型内部构造和初始化方式。

    而引用类型则必须使用make函数创建
    编译器会将make转换为目标类型专用的创建函数(或指令),
    以确保完成全部内存分配和相关属性初始化。

    当然,new函数也可为引用类型分配内存,但这是不完整创建。以字典(map)为例,它仅分配了字典类型本身(实际就是个指针包装)所需内存,并没有分配键值存储内存,也没有初始化散列桶等内部属性,因此它无法正常工作。

    相比数字、数组等类型,引用类型拥有更复杂的存储结构。除分配内存外,它们还须初始化一系列属性,
    诸如指针、长度,甚至包括哈希分布、数据队列等。
    
  • 相关阅读:
    3.10 Go Map哈希表
    3.9 Go Slice切片
    3.8 Go Array数组
    3.7 Go指针
    3.6 Go String型
    3.5 Go布尔型
    3.4 Go字符型
    3.3 Go浮点型
    3.2 Go整数类型
    3.1Go变量
  • 原文地址:https://www.cnblogs.com/iiiiiher/p/11909756.html
Copyright © 2020-2023  润新知