Go 语言的面向对象与接口 | 青训营笔记

72 阅读2分钟

Go语言面向对象编程

在Go语言中,面向对象编程是通过结构体和方法来实现的。结构体是一种自定义数据类型,可以包含多个字段。方法是一种与结构体相关联的函数,可以用来操作结构体中的字段。

下面是一个简单的例子,展示了如何定义一个结构体和方法:

type Person struct {
    Name string
    Age  int
}

func (p *Person) SayHello() {
    fmt.Printf("Hello, my name is %s and I am %d years old.\n", p.Name, p.Age)
}

在这个例子中,我们定义了一个名为Person的结构体,它有两个字段:NameAge。我们还定义了一个名为SayHello的方法,它与Person结构体相关联。该方法打印出一个问候语,其中包含该人的姓名和年龄。

要创建一个Person对象并调用SayHello方法,可以按照以下方式编写代码:

p := &Person{Name: "Alice", Age: 25}
p.SayHello()

这将创建一个名为pPerson对象,它的姓名为Alice,年龄为25。然后,我们调用SayHello方法来打印问候语。

Go语言的接口

在Go语言中,接口是一种类型,它定义了一组方法,但没有实现这些方法的代码。接口可以与任何实现了这些方法的类型相关联。

下面是一个简单的例子,展示了如何定义一个接口和实现它:

go复制代码
type Shape interface {
    Area() float64
}

type Rectangle struct {
    Width  float64
    Height float64
}

func (r Rectangle) Area() float64 {
    return r.Width * r.Height
}

在这个例子中,我们定义了一个名为Shape的接口,它有一个名为Area的方法。我们还定义了一个名为Rectangle的结构体,它有两个字段:WidthHeight。我们还实现了Area方法,以便Rectangle结构体可以与Shape接口相关联。

要创建一个Rectangle对象并计算其面积,可以按照以下方式编写代码:

r := Rectangle{Width: 10, Height: 5}
area := r.Area()

这将创建一个名为rRectangle对象,它的宽度为10,高度为5。然后,我们调用Area方法来计算其面积。