go语言实现多态

在golang中使用结构体和接口来实现多态,简单记录一下

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
// 接口,
type stringHandler interface {
doHandle(raw [][]byte)
}

//在功能上相当于java中的抽象类
type stringHandle struct{}
func (sh stringHandle) do(handler stringHandler, raw [][]byte) {
handler.doHandle(raw)
}

// 类get
type get struct {
beReplaced [][]byte
params []string
stringChan *chan string
}
// 实现接口中的方法
func (s get) doHandle(raw [][]byte) {
// do something
}

// 类post
type post struct {
beReplaced [][]byte
params []string
stringChan *chan string
}
// 实现接口中的方法
func (s post) doHandle(raw [][]byte) {
// do something
}


这么使用即可实现多态

1
2
3
4
5
6
7
handle := get{
params: params,
stringChan: stringchan,
}

var stringHandle stringHandle
stringHandle.do(handle, raw)