type A struct { a1 int a2 string}type B struct { b1 int b2 string}type C struct { c1 int c2 string}有3个结构,我想把名字作为键放到一个映射中,并处理func作为映射值(而不是类型切换)输入 arg 是一个接口,使用 for 循环来判断这个接口的结构是什么。并通过处理映射值中的 func 来处理此参数。大约:var funcMap map[structName]func(arg){A:processA, B:processB, C:processC}func testFunc(arg) { for k, v in range funcMap { if k == reflect.TypeOf(arg) { v(arg) } }} 我该如何构建此地图???希望代码,谢谢!(^o^)
1 回答

一只甜甜圈
TA贡献1836条经验 获得超5个赞
您希望在 以下位置为地图编制索引:reflect.Type
type funcMapType map[reflect.Type] func(interface{})var funcMap funcMapType
,然后向函数注册类型:
funcMap[reflect.TypeOf(A{})] = func(v interface{}) { log.Println("found A") }
如果您的函数需要修改结构,则需要注册一个指向结构类型的指针:
funcMap[reflect.TypeOf(&A{})] = func(v interface{}) { log.Println("found *A") }
https://play.golang.org/p/LKramgSc_gz
- 1 回答
- 0 关注
- 88 浏览
添加回答
举报
0/150
提交
取消