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

1.new和make的区别?

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

2.数组和切片的区别

  • 相同点:
    • 都是一系列用来存放对应数据的集合
  • 不同点:
    • 基本:
      • 数组不可改变,定义后只能修改,无法增删
      • 切片可以进行后续操作改变
    • 语法定义:
      • 数组的语法为: var arr [10]int
      • 切片的语法为: var arr []int
    • 类型:
      • 数组:值类型,进行函数传递值时,通常是值传递,拷贝一份后进行操作
      • 切片:引用类型,函数操作时,针对传递指针进行操作
    • 空间大小:
      • 数组:数组大小为初始值时,默认的长度以及类型进行开辟空间
      • 切片:切片大小默认为24。这是因为切片的结构体只存放三个3个变量
        • 指针,长度,容量
        • 切片可以进行增删值,当超出现有容量后,会在1024容量内进行翻倍,超出后则每次增加1/4
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容