先说下使用接口型函数的好处:
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岁了 ", 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) }