登录
首页 >  Golang >  Go教程

Golang中new创建指针的使用方法详解

时间:2025-10-24 23:21:33 331浏览 收藏

Golang小白一枚,正在不断学习积累知识,现将学习到的知识记录一下,也是将我的所得分享给大家!而今天这篇文章《Golang用new创建指针的方法详解》带大家来了解一下##content_title##,希望对大家的知识积累有所帮助,从而弥补自己的不足,助力实战开发!


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

Golang如何使用new创建指针

在Go语言中,new 是一个内置函数,用于为指定类型分配内存并返回指向该类型的指针。它常用于创建基本数据类型的指针或结构体的指针,初始化值为对应类型的零值。

new的基本用法

new(T) 会为类型 T 分配一块内存,将其初始化为 T 的零值,并返回一个 *T 类型的指针。

例如:
  • new(int) 返回 *int,指向一个初始值为 0 的 int 变量
  • new(string) 返回 *string,指向一个初始值为 "" 的字符串
  • new(bool) 返回 *bool,指向一个初始值为 false 的布尔值

示例代码:

ptr := new(int)
*ptr = 10
fmt.Println(*ptr) // 输出:10

为结构体创建指针

使用 new 也可以为结构体类型创建指针,字段自动初始化为各自的零值。

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 只做内存分配和零值初始化,不支持带初始值的创建。而使用 & 结合字面量可以同时初始化字段。

  • new(Person):分配内存,所有字段为零值,返回 *Person
  • &Person{Name: "Bob"}:创建实例并初始化部分字段,返回指针

因此,当需要自定义初始值时,推荐使用 & 方式;若只需零值指针,new 也是合法选择。

基本上就这些。new 在简单场景下可用,但日常编码中更灵活的方式是直接使用取地址操作。理解 new 有助于阅读标准库或底层代码中的指针处理逻辑。不复杂但容易忽略细节。

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>