📜  GO语言 结构体(1)

📅  最后修改于: 2023-12-03 14:41:37.297000             🧑  作者: Mango

GO语言 结构体

在GO语言中,结构体是一种自定义数据类型,它是一组不同数据类型的集合,可以被作为一个单元来处理。类似于面向对象中的类,结构体可以封装成一个自包含的数据结构。

结构体声明的一般形式为:

type struct_name struct {
    field1 data_type1
    field2 data_type2
    ...
    fieldN data_typeN
}

这是一个结构体定义的模板,其中struct_name为结构体名称,field1 ~ fieldN为结构体成员字段名称,data_type1 ~ data_typeN 为成员字段类型。

GO语言中的结构体可以包含任何类型的成员字段,包括其他结构体类型,甚至是函数类型。

声明结构体

下面是一个GO语言中的结构体用例:

type Person struct { // 结构体名称:Person
    name string // 字符串类型字段:name
    age  int    // 整数类型字段:age
}
创建结构体

声明结构体并不会分配任何内存。只有在实例化结构体时,才真正分配并声明空间。

结构体可以通过字面值语法来创建:

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

在创建实例时,使用name : value构建结构体字段-值对。这种语法方式的一个好处是不要求知道结构体字段的顺序。

在知道字段顺序时也可以使用以下方法:

person := Person{"John", 30}

这会将“John”赋值到name字段中,将30赋值到age字段中。

访问结构体字段

结构体中的字段可以通过点操作符.来访问:

print(person.name)
print(person.age)

输出结果为:

John
30
结构体指针

结构体实例的指针也是合法的类型:

personPtr := &person

看到&符号了吗?它返回person实例的指针。结构体字段可以通过解引用(*)符号来访问:

personPtr := &person
personPtr.name = "Jane"

这将修改person实例的name字段。

注意事项

只有定义了结构体类型,才能实例化并对其赋值。

在所有大括号{}后必须有一个空格,也需要在所有字段声明后添加换行符(包括最后一个字段)。

在声明时,尽可能按照惯例使用驼峰命名法。在名称中使用下划线字符是非常不常见的。

总结

在GO语言中,结构体是一种自定义数据类型,可以封装成一个自包含的数据结构。声明和实例化结构体相对简单,结构体的字段可以通过点操作符访问,也可以通过指针来访问。同时,一些注意事项也需要我们注意。