golang函数make(),new()区别与使用

1、make()函数的作用,给切片slice,字典map,通道channel初始化,在内存中开辟一块空间

  # 声明一个切片,未初始化前没有内存空间,所以为nil(nil切片不能直接赋值),返回值为空切片
  var sli []string
  # 使用make()初始化切片(初始化切片的长度和容量),初始化以后就有了自己的内存空间,
  # 所以不是nil(非nil切片可以直接赋值),返回值为空切片
  sli = make([]string, 5, 10)
  # 此时可以给切片直接赋值
  sli[0] = "是"
  sli[1] = "你"
  sli[2] = "吗"

2、区别:
make(T,args)只能为slice,map,channel三种类型的数据开辟空间,返回值为初始化后的T
new(T)可以为各种类型的数据开辟内存空间,返回值是一个指针,开辟内存空间的地址*T

3、通过new()函数来赋值
  # 声明指针
  var p *int
  # 把new()创建的内存空间地址,赋值给指针p
  p = new(int)   # new(int)作用就是创建一个整型大小(4字节)的空间,返回开辟的内存地址
  # 操作指针所指向的内存值
  *p = 60
  fmt.Println(*p)

 

©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页