Tobey's Notes

golang接口型函数详解

字数统计: 217阅读时长: 1 min
2018/11/14 Share

实例1

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
package main

import (
"fmt"
)

type Handler interface {
Do(k, v interface{})
}

type HandlerFunc func(k, v interface{})

func (f HandlerFunc) Do(k, v interface{}) {
f(k, v)
}

func Each(m map[interface{}]interface{}, h Handler) {
if m != nil && len(m) > 0 {
for k, v := range m {
h.Do(k, v)
}
}
}

func EachFunc(m map[interface{}]interface{}, f func(k, v interface{})) {
Each(m, HandlerFunc(f))
}

func selfInfo(k, v interface{}) {
fmt.Printf("大家好,我叫%s,今年%d岁\n", k, v)
}

func main() {
persons := make(map[interface{}]interface{})
persons["张三"] = 20
persons["李四"] = 23
persons["王五"] = 26

EachFunc(persons, selfInfo)

}

实例2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package main
import "fmt"

type Back interface {
backcall(int)
}

type wwjdbfun func(int) int

func (w wwjdbfun) backcall(n int) {
fmt.Println("backcall:", n)
w(n + 1)
}

func runfun(n int) int {
fmt.Println("wwjdbfun run1:", n)
return 1
}

func main() {
w := wwjdbfun(runfun)
w.backcall(10)
}

转载自: Golang必备技巧:接口型函数

CATALOG
  1. 1. 实例1
  2. 2. 实例2