go interface

接口的定义

1
2
3
4
type 接口名 interface {
方法名1(参数1, 参数2...)(返回值1, 返回值2...)
方法名2(参数1, 参数2...)(返回值1, 返回值2...)
}

example

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
package main

import "fmt"

// 接口类型
type speaker interface {
speak() // 只要实现了speak方法的变量都是speaker类型
}

type cat struct {
}

type dog struct {
}

type car interface {
runCar()
}

type falali struct {
brand string
}

func (f falali) runCar() {
fmt.Printf("%s速度70迈~\n", f.brand)
}

type baoshijie struct {
brand string
}

func (f baoshijie) runCar() {
fmt.Printf("%s速度700迈~\n", f.brand)
}

func drive(c car) {
c.runCar()
}

func (c cat) speak() {
fmt.Println("喵喵喵...")
}

func (d dog) speak() {
fmt.Println("汪汪汪...")
}

func run(x speaker) {
// 接收一个参数,传进来什么,就run什么
x.speak()
}

// 在编程中会遇到以下场景: 我不关心一个变量是什么类型,只关心调用它的方法
func main() {
var c1 cat
var d1 dog

run(c1)
run(d1)

var f falali
var b baoshijie
drive(f)
drive(b)
}

本文标题:go interface

文章作者:shuke

发布时间:2020年07月03日 - 18:07

最后更新:2020年07月03日 - 18:07

原始链接:https://shuke163.github.io/2020/07/03/go-interface/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

-------------本文结束感谢您的阅读-------------

本文标题:go interface

文章作者:shuke

发布时间:2020年07月03日 - 18:07

最后更新:2020年07月03日 - 18:07

原始链接:https://shuke163.github.io/2020/07/03/go-interface/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

0%