首页 > 后端开发 > Golang > 正文

## 在 Go 中什么时候应该使用 `new` 关键字?

Susan Sarandon
发布: 2024-10-25 05:30:02
原创
305 人浏览过

## When Should You Use the `new` Keyword in Go?

Go 中 new 的使用

使用 Go 时,了解 new 关键字的正确用法至关重要。本文旨在阐明建议使用 new 的特定情况,解决常见的误解并提供清晰的解释。

原始语言构造

如提供的示例所示,new 不适合原始语言切片等类型。在这些情况下,应使用 make 命令来初始化切片或映射。例如:

<code class="go">func main() {
    y := make([]float, 100)
    fmt.Printf("Len = %d", len(y)) // Output: Len = 100
}</code>
登录后复制

结构

使用结构时,y := new(my_struct) 和 y := &my_struct 之间的选择取决于预期用途和代码可读性。这两个选项都会创建一个指向堆上新分配的结构的指针。不过,new 在分配指针时可以更明确,而 & 是更简洁的表示法。

初始化注意事项

在 Go 中,变量默认使用零值进行初始化。这意味着像整数、浮点数和布尔值这样的基本类型被初始化为 0,而切片、映射和结构则被初始化为它们各自的 nil 值。 new 关键字不会改变此行为,因此任何分配的结构体的字段仍将初始化为零值。

new 的用例

尽管存在上述限制,new 还是有其用途在Go中:

  • 非零值初始化:对于具有非零初始值的结构体,new可以很方便,允许您分配一个新的结构体并初始化其字段
  • 私有字段或接口:将分配包装在函数中(例如 NewMyStruct())可以隐藏私有字段或实例化接口,从而更好地控制结构及其可访问性。
  • 不断发展的结构:使用 new 可以更轻松地更改结构的结构,而不影响其现有用户。

以上是## 在 Go 中什么时候应该使用 `new` 关键字?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!