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 關注
- 84 瀏覽
添加回答
舉報
0/150
提交
取消