【Golang】map的值都是函数怎么定义?
在定义map里不加括号,在使用map时用括号调用,map的值是一个函数对象。
不加括号返函数指针。加括号返结果。
package main
import (
"fmt"
)
func main() {
var m = make(map[string]func() string)
m["name"] = name
m["sex"] = sex
m["age"] = age
fmt.Println(m["name"],m["name"]())
fmt.Println(m["sex"],m["sex"]())
fmt.Println(m["age"],m["age"]())
}
func name() string {
return "zhangsan"
}
func sex() string {
return "nan"
}
func age() string {
return "yibai"
}
0x100b880 zhangsan
0x100b8a0 nan
0x100b8c0 yibai