Fork me on GitHub

Go接口的实现技巧

本文讲述一种比较少见的接口实现用法:用函数实现接口。

直接上代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//Tester接口,包含Do()方法
type Tester interface {
Do()
}

type FuncDo func()

//实现Do方法
func (self FuncDo) Do() { self() }

func main() {
var t Tester = FuncDo(func() { println("Hello, World!") })
t.Do()
}

输出:

Hello, World!

FuncDo类型实现了Do方法,所以可以将其赋值给Tester接口(该接口仅包含Do方法)。然后通过调用Tester接口类型t的方法来间接实现FuncDo函数Do方法的调用 

您的鼓励是我持之以恒的动力