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

在Go语言中,new 是一个内置函数,用于为指定类型分配内存并返回指向该类型的指针。它常用于创建基本数据类型的指针或结构体的指针,初始化值为对应类型的零值。
new的基本用法
new(T) 会为类型 T 分配一块内存,将其初始化为 T 的零值,并返回一个 *T 类型的指针。
例如:new(int) 返回 *int,指向一个初始值为 0 的 int 变量 new(string) 返回 *string,指向一个初始值为 “” 的字符串 new(bool) 返回 *bool,指向一个初始值为 false 的布尔值
示例代码:
ptr := new(int)*ptr = 10fmt.Println(*ptr) // 输出:10
为结构体创建指针
使用 new 也可以为结构体类型创建指针,字段自动初始化为各自的零值。
立即学习“go语言免费学习笔记(深入)”;
type Person struct { Name string Age int}p := new(Person)p.Name = "Alice"p.Age = 25fmt.Printf("%+vn", *p) // 输出:{Name:Alice Age:25}
注意:虽然可以这样使用,但在实际开发中更常见的是使用 &Person{} 或直接字面量取地址的方式,语法更清晰。
new与&的区别
new 只做内存分配和零值初始化,不支持带初始值的创建。而使用 & 结合字面量可以同时初始化字段。
new(Person):分配内存,所有字段为零值,返回 *Person &Person{Name: "Bob"}:创建实例并初始化部分字段,返回指针
因此,当需要自定义初始值时,推荐使用 & 方式;若只需零值指针,new 也是合法选择。
基本上就这些。new 在简单场景下可用,但日常编码中更灵活的方式是直接使用取地址操作。理解 new 有助于阅读标准库或底层代码中的指针处理逻辑。不复杂但容易忽略细节。
以上就是Golang如何使用new创建指针的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1416801.html
微信扫一扫
支付宝扫一扫