V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
SGL
V2EX  ›  Go 编程语言

go 语言的 new 在什么场景算是“最佳实践”,感觉这个内置存在感好低,都可以被删掉了。

  •  
  •   SGL · 20 天前 · 2932 次点击
    大部分常见,都可以被 var + &给解决。这个 new 是用来解决什么问题的,其最初的场景是什么。
    12 条回复    2025-06-25 01:34:13 +08:00
    maggch97
        1
    maggch97  
       20 天前
    var + & 你看来很正常,但是十多年前写 C/C++的人应该会非常不习惯这么写
    wuhunyu
        3
    wuhunyu  
       20 天前
    只能 new(T)了吧,还有其它用法吗
    strobber16
        4
    strobber16  
       20 天前
    不是最初场景,但是我写泛型的时候会用到
    ·func IsZero[T comparable](a T) bool {
    return a == *new(T)
    }
    ·
    FrankAdler
        5
    FrankAdler  
       20 天前 via Android
    var 出来的指针型是 nil ,mew 的是零值
    这种问题随便找个 ai 问下就行了:go 的 new 关键字 有什么不可替代的场景
    Miranquil
        6
    Miranquil  
       20 天前   ❤️ 1
    @FrankAdler 确切的说是 new 出来的是一个指向目标类型零值的指针。
    wangritian
        7
    wangritian  
       20 天前
    @FrankAdler 楼主提到的&就是为了覆盖你说的场景
    lovelylain
        8
    lovelylain  
       20 天前 via Android
    new(T)场景也能被 var+&代替,只是能省一行代码。
    nativeBoy
        9
    nativeBoy  
       20 天前
    @wuhunyu #3 还有`T{}`
    gigishy
        10
    gigishy  
       20 天前 via iPhone
    作为明示内存分配且并不赋值是个很不错的好习惯,一目了然。
    kevinxzhao
        11
    kevinxzhao  
       20 天前
    好像没有什么是必须这样写的。
    dobelee
        12
    dobelee  
       20 天前
    new 我经常用,用来强调变量是零值。不重要的变量才用&,比如 resp 。
    var 很少用,除非强调数据类型,比如 bool 。
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   987 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 19:14 · PVG 03:14 · LAX 12:14 · JFK 15:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.