美文网首页
Go语言中new与make的区别

Go语言中new与make的区别

作者: 疾风2018 | 来源:发表于2021-11-22 13:57 被阅读0次

    Go语言中的new和make很容易混淆。 列个表格来阐述两者之间的不同和适用场景。

    new make
    返回值 内存地址(指针) 对象本身 (但是slice, map, chan本身是一个包含一个指向实际数据的指针的轻量级的对象)
    初始化 对分配的内存做零值初始化,即内存里全部赋值成零。 会根据<length>, <capacity>等参数分配需要的空间,使得slice, map, chan的内部指针不为nil
    适用场景 一般类型 等价于 &T{} 创建slice,map,chan (切片、映射、通道)
    代码模板 new([]int] make([]T, [<length>], [<capacity>]) make(map[T1]T2, [<capacity>]) make(chan T)
    示例代码 make([]int) make([]int, 10, 100) make([]int, 10) make(map[string]string) make(map[string]string, 10) make(chan int)

    make用的比较多,new一般不用,因为可以被 &T{} 形式替代,而且&T{} 还可以对初始化成员域的值

    相关文章

      网友评论

          本文标题:Go语言中new与make的区别

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