跳转至

接口


更新于 2023-12-06

接口是一种抽象类型,只包含一些方法
某种类型实现乐接口定义的所有方法,即实现了该接口

关键字

关键字
interface

声明接口

接口是一种抽象类型,只包括具体类型必须拥有或实现的方法。
接口不包含这些方法的实现细节

Go
1
2
3
4
5
6
//Shape 接口具有 Perimeter() 和 Area() 方法。
type Shape interface {
    Perimeter() float64
    Area() float64
}
//在创建 Square 结构时,它必须实现两种方法,而不是仅实现一种。

实现接口

Go
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
//方形
type Square struct {
    size float64
}

func (s Square) Area() float64 {
    return s.size * s.size
}

func (s Square) Perimeter() float64 {
    return s.size * 4
}

func main() {
    var s Shape = Square{3}
    fmt.Printf("%T\n", s)
    fmt.Println("Area: ", s.Area())
    fmt.Println("Perimeter:", s.Perimeter())
}
Go
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//圆
type Circle struct {
    radius float64
}

func (c Circle) Area() float64 {
    return math.Pi * c.radius * c.radius
}

func (c Circle) Perimeter() float64 {
    return 2 * math.Pi * c.radius
}

func printInformation(s Shape) {
    fmt.Printf("%T\n", s)
    fmt.Println("Area: ", s.Area())
    fmt.Println("Perimeter:", s.Perimeter())
    fmt.Println()
}

func main() {
    var s Shape = Square{3}
    printInformation(s)

    c := Circle{6}
    printInformation(c)
}