type A struct {
a1 int int
a2 string string
}
type B struct {
b1 int int
b2 string
}
type C struct {
c1 int int
c2 string string
}
有3個結構,我想把名字放到map中作為key,把處理func作為map的value
。(而不是型別轉換)
input arg是一個介面,用for回圈來判斷這個介面是什么結構。然后通過map值中的process func來處理這個arg。 關于:
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^)
uj5u.com熱心網友回復:
你想在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("發現*A"/span>) }
https://play.golang.org/p/LKramgSc_gz
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/313485.html
標籤:
