如何使用函数作为地图的键?例如:type Action func(int)func test(a int) { }func test2(a int) { }func main() { x := map[Action]bool{} x[test] = true x[test2] = false}这些代码会显示错误: invalid map key type Action
3 回答
肥皂起泡泡
TA贡献1829条经验 获得超6个赞
您不能将函数用作映射中的键:键类型必须具有可比性。
映射键可以是任何可比较的类型。语言规范对此进行了精确定义,但简而言之,可比较的类型是布尔值、数字、字符串、指针、通道和接口类型,以及仅包含这些类型的结构或数组。值得注意的是,列表中没有切片、映射和函数;这些类型不能使用 == 进行比较,并且不能用作映射键
根据您的具体用例,您可能使用的是接口。
慕神8447489
TA贡献1780条经验 获得超1个赞
您可以使用reflect.
import (
"reflect"
"math"
)
func foo () {
table := make(map[uintptr] string)
table[reflect.ValueOf(math.Sin)] = "Sin"
table[reflect.ValueOf(math.Cos)] = "Cos"
println(table[reflect.ValueOf(math.Cos)])
}
- 3 回答
- 0 关注
- 195 浏览
添加回答
举报
0/150
提交
取消