golang中用new新建一个struct

在Go语言中,new关键字用于在内存中分配空间给一个值类型(如结构体、数组、切片等),并返回指向该类型的指针。使用new创建结构体实例时,你将得到一个指向该结构体的指针。这是因为new总是返回一个指针。

下面是一个使用new创建结构体实例的例子:

package main

import "fmt"

// 定义一个结构体
type Person struct {
    Name string
    Age  int
}

func main() {
    // 使用 new 分配 Person 结构体的内存,并返回指向该结构体的指针
    p := new(Person)

    // 初始化结构体的字段
    p.Name = "John Doe"
    p.Age = 30

    // 打印结构体的内容
    fmt.Printf("Name: %s, Age: %d\n", (*p).Name, (*p).Age)

    // 或者使用指针接收者的语法
    fmt.Printf("Using pointer receiver: Name: %s, Age: %d\n", p.Name, p.Age)
}

然而,在Go中更常见的做法是使用struct字面量或调用new的替代方法&struct{}来创建并初始化结构体实例,这通常更简洁且更直观:

package main

import "fmt"

type Person struct {
    Name string
    Age  int
}

func main() {
    // 使用 struct 字面量初始化结构体实例
    p := Person{Name: "John Doe", Age: 30}

    // 打印结构体的内容
    fmt.Printf("Name: %s, Age: %d\n", p.Name, p.Age)

    // 或者使用复合字面量初始化结构体,并返回指向该结构体的指针
    pPtr := &Person{Name: "Jane Doe", Age: 25}

    // 打印通过指针访问的结构体内容
    fmt.Printf("Using pointer: Name: %s, Age: %d\n", pPtr.Name, pPtr.Age)
}

使用struct字面量或复合字面量初始化结构体通常更方便,因为你可以在创建结构体的同时初始化其字段,而无需显式地使用指针操作。

Was this helpful?

0 / 0

发表回复 0