先说下使用接口型函数的好处:
1、不必将某个接口函数附在某个type上面,保证了命名随意
2、 可以直接调用函数或者使用该接口,两两不耽误
直接上代码吧:
// interface_func project main.go 接口型函数基本使用
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 SelfInfo(k, v interface{}) {
fmt.Printf("大家好,我是%s,今年%d岁了\n", k, v)
}
func EachFunc(m map[interface{}]interface{}, f func(k, v interface{})) {
Each(m, HandlerFunc(f))
}
func main() {
SelfInfo("chaozhou", 23) //可以单独调用
SelfInfo("lisi", 24) //可以单独调用
person := make(map[interface{}]interface{})
person["chaozhou"] = 23
person["lisi"] = 24
EachFunc(person, SelfInfo)
}