美文网首页
go new,make的区别,数组和切片的区别

go new,make的区别,数组和切片的区别

作者: 卖毛玉的小贩 | 来源:发表于2019-10-11 20:46 被阅读0次

    1.new和make的区别?

    • 相同点:
      • new和make都是用来开辟空间的
    • 不同点:
      • new是初始化一个类型的指针,返回的是类型指针,而里面的值为默认初始值,只对值类型有效
      • make是针对slice切片,map字典,chan管道初始化,并且返回对应的初始值
        • 并非返回指针,而是对应的类型有效值

    2.数组和切片的区别

    • 相同点:
      • 都是一系列用来存放对应数据的集合
    • 不同点:
      • 基本:
        • 数组不可改变,定义后只能修改,无法增删
        • 切片可以进行后续操作改变
      • 语法定义:
        • 数组的语法为: var arr [10]int
        • 切片的语法为: var arr []int
      • 类型:
        • 数组:值类型,进行函数传递值时,通常是值传递,拷贝一份后进行操作
        • 切片:引用类型,函数操作时,针对传递指针进行操作
      • 空间大小:
        • 数组:数组大小为初始值时,默认的长度以及类型进行开辟空间
        • 切片:切片大小默认为24。这是因为切片的结构体只存放三个3个变量
          • 指针,长度,容量
          • 切片可以进行增删值,当超出现有容量后,会在1024容量内进行翻倍,超出后则每次增加1/4

    相关文章

      网友评论

          本文标题:go new,make的区别,数组和切片的区别

          本文链接:https://www.haomeiwen.com/subject/byqtuctx.html