這是我的例子:http : //play.golang.org/p/D608cYqtO5基本上我想這樣做:theType := reflect.TypeOf(anInterfaceValue)theConvertedValue := anInterfaceValue.(theType)
1 回答

慕神8447489
TA貢獻1780條經(jīng)驗 獲得超1個贊
符號
value.(type)
被稱為類型斷言。將type在某個斷言在編譯時是已知的,它總是一個類型名稱。
在您的游樂場示例中,SetStruct2可以使用類型開關(guān)來處理其第二個參數(shù)的不同類型:
switch v := value.(type) {
case Config:
// code that uses v as a Config
case int:
// code that uses v as an int
}
但是,您不能將接口斷言為動態(tài)的(例如在您的代碼中)。因為否則編譯器無法對您的程序進行類型檢查。
編輯:
如果有另一種方法,我不想一個一個地處理它們?
您可以使用反射以與類型無關(guān)的方式工作。然后你可以在值上隨機設置東西,但如果你對一個類型執(zhí)行非法操作,它會恐慌。
如果您想從編譯器的類型檢查中受益,則必須枚舉不同的情況。
- 1 回答
- 0 關(guān)注
- 276 瀏覽
添加回答
舉報
0/150
提交
取消