go的数据类型-复合数据类型-struct(一)

2023-04-19 21:34:54 浏览数 (1)

在Go语言中,struct是一种复合数据类型,它允许我们将多个不同类型的数据组合在一起,以便更方便地管理和操作。

定义

定义一个struct类型需要使用type关键字,结构体的定义方式与C语言类似,格式如下:

代码语言:javascript复制
type StructName struct {
    Field1 Type1
    Field2 Type2
    ...
    FieldN TypeN
}

其中,StructName为结构体类型的名称,Field1Field2等为结构体中的字段名,Type1Type2等为字段对应的类型。注意,结构体字段的顺序非常重要,因为它们在内存中的排列顺序就是定义时的顺序。

以下是一个简单的示例,定义了一个Person结构体类型,包含NameAge两个字段:

代码语言:javascript复制
type Person struct {
    Name string
    Age  int
}

初始化

在Go中,我们可以使用多种方式初始化一个struct类型的值。最常见的方式是使用结构体字面量,格式为{Field1: Value1, Field2: Value2, ..., FieldN: ValueN}。例如,我们可以用以下方式初始化一个Person结构体类型的值:

代码语言:javascript复制
person := Person{Name: "Alice", Age: 30}

这将创建一个名为person的变量,并将其初始化为一个名为Alice、年龄为30Person结构体。

另一种初始化方式是使用new关键字。这将创建一个指向新分配的结构体的指针。例如,我们可以使用以下代码创建一个指向Person结构体类型的指针:

代码语言:javascript复制
personPtr := new(Person)

这将创建一个名为personPtr的指针变量,指向一个新分配的Person结构体类型的值,其中所有字段都被初始化为其对应类型的零值。

访问

我们可以使用点号.来访问结构体类型的字段,例如:

代码语言:javascript复制
fmt.Printf("Name: %s, Age: %dn", person.Name, person.Age)

这将输出Name: Alice, Age: 30。如果我们想要修改结构体类型的字段,则可以通过点号来赋值:

代码语言:javascript复制
person.Age = 31
fmt.Printf("Name: %s, Age: %dn", person.Name, person.Age)

这将输出Name: Alice, Age: 31

go

0 人点赞