📌  相关文章
📜  init struct - Go 编程语言 - Go 编程语言(1)

📅  最后修改于: 2023-12-03 15:01:24.571000             🧑  作者: Mango

初始化结构体 - Go 编程语言

在 Go 编程语言中,结构体结构被广泛用于定义复杂数据类型。结构体是一个具有一组相关字段的值,每个字段都有自己的类型。初始化结构体是在创建一个变量并分配其值的过程。在这篇文章中,我们将介绍初始化结构体的不同方法和具体实例。

基本结构体定义

首先,让我们看一个基本的结构体定义:

type Person struct {
    name string
    age  int
}

可以看到,这个结构体类型有两个字段:nameage

方法一:直接赋值

最简单的初始化结构体的方法就是直接赋值。我们可以这样做:

var john Person
john.name = "John"
john.age = 30

fmt.Printf("Name: %s, Age: %d", john.name, john.age)

这里,我们首先声明了一个 Person 类型的变量 john,然后为其字段 nameage 赋值。

输出结果是:

Name: John, Age: 30

这种方法适用于已经知道了结构体内所有字段的值,可以直接将其设定为变量的初始值。

方法二:使用 struct 字面量

Go 语言还可以使用 struct 字面量来初始化结构体。可以这样做:

john := Person{name: "John", age: 30}

fmt.Printf("Name: %s, Age: %d", john.name, john.age)

这里可以看到,我们使用了 nameage 字段标签来初始化结构体。注意,这里用了 := 而不是 = 来声明变量。

输出结果是一样的:

Name: John, Age: 30

这种方法可以用于只初始化一部分结构体字段的情况下。

方法三:使用 new()

第三种方法是使用 new() 函数进行初始化:

john := new(Person)
john.name = "John"
john.age = 30

fmt.Printf("Name: %s, Age: %d", john.name, john.age)

这里,我们使用了 new() 函数,它会分配内存并返回一个指向类型零值的指针。也就是说,john 会指向一个 Person 类型的零值。

输出结果是:

Name: John, Age: 30
方法四:使用构造函数

最后,我们可以使用构造函数来初始化结构体。构造函数是一个函数,它返回一个结构体实例。我们可以像这样使用构造函数:

func NewPerson(name string, age int) *Person {
    p := Person{name: name, age: age}
    return &p
}

john := NewPerson("John", 30)

fmt.Printf("Name: %s, Age: %d", john.name, john.age)

这里,我们定义了一个名为 NewPerson 的构造函数,并使用 nameage 参数来初始化结构体。注意,我们返回的是一个指向结构体的指针。

输出结果也是一样的:

Name: John, Age: 30
总结

在这篇文章中,我们介绍了在 Go 编程语言中初始化结构体的四种方式。它们分别是直接赋值、使用 struct 字面量、使用 new() 函数和使用构造函数。选择使用哪种方法取决于实际情况。无论哪种方法,初始化结构体都非常容易和简单。