new用于分配内存并返回指向零值的指针,如new(int)返回*int,常用于基础类型和结构体初始化;而&可结合字面量初始化字段,更推荐使用。

在Go语言中,new 是一个内置函数,用于为指定类型分配内存并返回指向该类型的指针。它常用于创建基本数据类型的指针或结构体的指针,初始化值为对应类型的零值。
new(T) 会为类型 T 分配一块内存,将其初始化为 T 的零值,并返回一个 *T 类型的指针。
例如:示例代码:
ptr := new(int) *ptr = 10 fmt.Println(*ptr) // 输出:10
使用 new 也可以为结构体类型创建指针,字段自动初始化为各自的零值。
立即学习“go语言免费学习笔记(深入)”;
type Person struct {
Name string
Age int
}
p := new(Person)
p.Name = "Alice"
p.Age = 25
fmt.Printf("%+v\n", *p) // 输出:{Name:Alice Age:25}
注意:虽然可以这样使用,但在实际开发中更常见的是使用 &Person{} 或直接字面量取地址的方式,语法更清晰。
new 只做内存分配和零值初始化,不支持带初始值的创建。而使用 & 结合字面量可以同时初始化字段。
new(Person):分配内存,所有字段为零值,返回 *Person&Person{Name: "Bob"}:创建实例并初始化部分字段,返回指针因此,当需要自定义初始值时,推荐使用 & 方式;若只需零值指针,new 也是合法选择。
基本上就这些。new 在简单场景下可用,但日常编码中更灵活的方式是直接使用取地址操作。理解 new 有助于阅读标准库或底层代码中的指针处理逻辑。不复杂但容易忽略细节。
以上就是Golang如何使用new创建指针的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号