接口
更新于 2023-12-06
接口是一种抽象类型,只包含一些方法
某种类型实现乐接口定义的所有方法,即实现了该接口
关键字
声明接口
接口是一种抽象类型,只包括具体类型必须拥有或实现的方法。
接口不包含这些方法的实现细节
| Go |
|---|
| //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)
}
|