new是Go中用于在堆上分配指定类型零值内存并返回其指针的内置函数,仅执行分配、置零、返回指针三步,不调用构造函数;适用于需零值指针且类型复杂、泛型或反射等场景。

new 是 Go 语言内置函数,用于在堆上分配指定类型的零值内存,并返回指向该内存的指针。它不调用构造函数(Go 没有构造函数),也不执行初始化逻辑,只做“分配 + 置零 + 返回指针”三件事。
语法:new(T),其中 T 是任意类型(不能是接口、未定义类型或抽象类型如 func 或 map)。
返回值:类型为 *T 的指针,指向一个刚分配的、值为 T 类型零值的内存块。
& 作用于一个已存在的变量,取其地址;new 是直接分配新内存并返回指针,无需先声明变量。
实际开发中,new 使用频率远低于 &T{} 或字面量取地址。它主要适合以下场景:
⚠️ 注意:new([]int) 得到的是 *[]int(指向 nil 切片),不是可直接 append 的切片指针;若需可操作的 slice,应写 &[]int{}[0:0] 或更推荐用 make([]int, 0) 配合取地址。
make 仅用于 slice、map、chan 三种引用类型,返回的是值(不是指针),且完成初始化(如分配底层数组、哈希表结构等);new 适用于任意类型,返回指针,只做零值分配。
基本上就这些。new 是个简单但容易被高估的函数——多数时候,用字面量加 & 更清晰,只有明确需要“零值指针”且无初始化需求时才选它。
以上就是如何使用new创建Go指针变量_Go new指针创建方式说明的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号