亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

高浪 如何使用結構名稱作為映射鍵

高浪 如何使用結構名稱作為映射鍵

Go
人到中年有點甜 2022-10-04 15:49:07
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


查看完整回答
反對 回復 2022-10-04
  • 1 回答
  • 0 關注
  • 84 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號