第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

高浪 如何使用結(jié)構(gòu)名稱作為映射鍵

高浪 如何使用結(jié)構(gòu)名稱作為映射鍵

Go
人到中年有點(diǎn)甜 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個結(jié)構(gòu),我想把名字作為鍵放到一個映射中,并處理func作為映射值(而不是類型切換)輸入 arg 是一個接口,使用 for 循環(huán)來判斷這個接口的結(jié)構(gòu)是什么。并通過處理映射值中的 func 來處理此參數(shù)。大約: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)        }    }} 我該如何構(gòu)建此地圖???希望代碼,謝謝!(^o^)
查看完整描述

1 回答

?
一只甜甜圈

TA貢獻(xiàn)1836條經(jīng)驗 獲得超5個贊

您希望在 以下位置為地圖編制索引:reflect.Type

type funcMapType map[reflect.Type]
func(interface{})var funcMap funcMapType

,然后向函數(shù)注冊類型:

funcMap[reflect.TypeOf(A{})] = func(v interface{}) { log.Println("found A") }

如果您的函數(shù)需要修改結(jié)構(gòu),則需要注冊一個指向結(jié)構(gòu)類型的指針:

funcMap[reflect.TypeOf(&A{})] = func(v interface{}) { log.Println("found *A") }

https://play.golang.org/p/LKramgSc_gz


查看完整回答
反對 回復(fù) 2022-10-04
  • 1 回答
  • 0 關(guān)注
  • 87 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號