📜  如何在 Golang 中实例化结构指针地址运算符?(1)

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

如何在 Golang 中实例化结构指针地址运算符?

在 Golang 中,我们可以使用结构体来组织数据。结构体是一种复合数据类型,可以包含多个不同类型的成员变量。我们可以通过实例化结构体来创建一个具体的结构体对象,然后通过指针地址运算符来获取该对象的地址。

实例化结构体

要实例化结构体,我们首先需要定义一个结构体类型。结构体定义的语法如下:

type StructName struct {
    field1 type1
    field2 type2
    // ...
}

其中 StructName 是结构体的名称,field1field2 等是结构体的成员变量名,type1type2 等是成员变量的类型。

现在我们来实例化一个结构体对象,示例如下:

package main

import "fmt"

type Person struct {
    Name   string
    Age    int
    Gender string
}

func main() {
    var p Person
    p.Name = "John"
    p.Age = 30
    p.Gender = "Male"
    fmt.Printf("Name: %s\nAge: %d\nGender: %s\n", p.Name, p.Age, p.Gender)
}

在上面的示例中,我们定义了一个 Person 结构体类型,包含 NameAgeGender 三个成员变量。然后我们使用 var 关键字来声明一个 p 变量,并将其赋值为一个空的 Person 结构体对象。接着我们设置 p 的成员变量的值,最后打印出 p 的信息。

输出结果为:

Name: John
Age: 30
Gender: Male
获取结构体对象地址

要获取结构体对象的地址,我们需要使用指针地址运算符 &。该运算符返回一个指向目标变量的指针。

我们可以使用下面的代码片段来演示如何获取结构体对象的地址:

package main

import "fmt"

type Person struct {
    Name   string
    Age    int
    Gender string
}

func main() {
    var p Person
    p.Name = "John"
    p.Age = 30
    p.Gender = "Male"
    fmt.Printf("Name: %s\nAge: %d\nGender: %s\n", p.Name, p.Age, p.Gender)

    pp := &p
    fmt.Printf("p's memory address: %p\n", pp)
}

在上面的示例中,我们定义了一个 Person 结构体类型,包含 NameAgeGender 三个成员变量。然后我们使用 var 关键字来声明一个 p 变量,并将其赋值为一个空的 Person 结构体对象。接着我们设置 p 的成员变量的值,最后打印出 p 的信息。

然后我们定义了一个 pp 变量,并使用指针地址运算符 & 获取了 p 的地址,并将其赋值给了 pp。最后我们打印出了 pp 的值,即 p 的地址。

输出结果为:

Name: John
Age: 30
Gender: Male
p's memory address: 0xc000086000
总结

在 Golang 中,我们可以使用结构体来组织数据。要实例化结构体,我们首先需要定义一个结构体类型,然后使用 var 关键字来声明一个变量并将其赋值为一个空的结构体对象。要获取结构体对象的地址,我们可以使用指针地址运算符 &