在 Go 语言中,结构体(struct)是一种自定义的数据类型,用于将不同类型的数据组合在一起。结构体的使用方法如下:
- 定义结构体类型:
使用关键字
type
定义一个结构体类型。结构体由字段名和字段类型组成,字段名以大写字母开头,以便在包外访问。
go
type Person struct {
Name string
Age int
}
- 创建结构体实例:
使用
new
关键字或直接使用结构体字面量创建结构体实例。
```go // 使用 new 关键字创建结构体实例 p1 := new(Person) p1.Name = "Alice" p1.Age = 30
// 使用结构体字面量创建结构体实例 p2 := Person{Name: "Bob", Age: 25} ```
- 访问结构体字段:
使用点号
.
访问结构体字段。
go
fmt.Println(p1.Name) // 输出:Alice
fmt.Println(p1.Age) // 输出:30
- 结构体方法: 在结构体类型上定义方法,方法名以小写字母开头。方法的第一个参数是接收者,用于在方法内部访问结构体的字段。
go
func (p Person) SayHello() {
fmt.Printf("Hello, my name is %s and I am %d years old.\n", p.Name, p.Age)
}
- 调用结构体方法:
使用
.
操作符调用结构体上的方法。
go
p1.SayHello() // 输出:Hello, my name is Alice and I am 30 years old.
- 结构体嵌套: 可以在结构体中定义另一个结构体类型作为字段。
```go type Address struct { City string State string }
type Person struct { Name string Age int Address Address } ```
- 结构体比较:
使用
==
和!=
操作符比较两个结构体实例是否相等。对于嵌套结构体,需要逐层比较字段值。
```go p1 := Person{Name: "Alice", Age: 30} p2 := Person{Name: "Alice", Age: 30} p3 := Person{Name: "Bob", Age: 25}
fmt.Println(p1 == p2) // 输出:true fmt.Println(p1 == p3) // 输出:false ```
以上就是 Go 语言中结构体的基本使用方法。