01.结构体和方法

结构体(Struct)和方法(Method)是 Go 语言中非常重要的概念,用于定义自定义类型和该类型的行为。让我们来看一下结构体和方法在 Go 中的基本用法和示例。

结构体(Struct)

结构体是一种用户自定义的数据类型,用于封装多个不同类型的数据字段。在结构体中,这些字段被称为结构体的成员(Fields)。

定义结构体

结构体通过 typestruct 关键字定义,如下所示:

package main

import "fmt"

// 定义结构体
type Person struct {
    Name   string
    Age    int
    Gender string
}

func main() {
    // 创建结构体实例
    var p1 Person
    p1.Name = "Alice"
    p1.Age = 30
    p1.Gender = "Female"

    fmt.Println(p1) // 输出:{Alice 30 Female}

    // 另一种初始化方式
    p2 := Person{"Bob", 25, "Male"}
    fmt.Println(p2) // 输出:{Bob 25 Male}
}

匿名结构体

可以在定义时不指定结构体的名称,称为匿名结构体。通常用于临时数据结构的定义:

package main

import "fmt"

func main() {
    // 定义匿名结构体
    p := struct {
        Name   string
        Age    int
        Gender string
    }{
        Name:   "Alice",
        Age:    30,
        Gender: "Female",
    }

    fmt.Println(p) // 输出:{Alice 30 Female}
}

方法(Method)

方法是一种与结构体关联的函数,允许结构体实例执行特定的操作。在 Go 中,方法是通过将函数与特定类型关联而实现的。

定义方法

方法的定义与普通函数类似,但在函数名前面加上接收者(Receiver),即方法所属的结构体类型。

package main

import "fmt"

// 定义结构体
type Rectangle struct {
    Width  float64
    Height float64
}

// 定义方法:计算面积
func (r Rectangle) Area() float64 {
    return r.Width * r.Height
}

func main() {
    // 创建结构体实例
    rect := Rectangle{Width: 10, Height: 5}

    // 调用方法
    fmt.Println("Width:", rect.Width)
    fmt.Println("Height:", rect.Height)
    fmt.Println("Area:", rect.Area()) // 调用结构体的方法计算面积
}

在上面的例子中,Area() 方法属于 Rectangle 结构体,通过 (r Rectangle) 指定了该方法的接收者是 Rectangle 类型的实例 r。通过这种方式,可以在方法内部访问和操作结构体的字段。

小结

  • 结构体用于封装多个字段,定义自定义的复合数据类型。
  • 方法是与结构体关联的函数,允许对结构体实例进行操作和处理。
  • 使用结构体和方法可以更加灵活和清晰地组织代码,提高代码的可读性和可维护性。
posted @ 2024-07-09 02:31  JJJhr  阅读(9)  评论(0编辑  收藏  举报