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

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

等效結(jié)構(gòu)上字段的接口轉(zhuǎn)換

等效結(jié)構(gòu)上字段的接口轉(zhuǎn)換

Go
蠱毒傳說 2023-06-19 17:09:18
有沒有一種直接的方法可以將某些字段為“通用”( interface{}) 的結(jié)構(gòu)轉(zhuǎn)換為具有相同字段名稱但“強類型”( , 等) 的另一種int類型string?可以這么說,給定定義:package mainimport (    "fmt")type GenericData struct {    Hard int    Soft interface{}}type Data struct {    Hard int    Soft int}type GenericDataGenerator func() GenericDatafunc generateGenericData() interface{} {    return GenericData{1, 2}}func returnsGenericDataGenerator() interface{} {    return generateGenericData}GenericData從到轉(zhuǎn)換是否Data需要顯式轉(zhuǎn)換所有interface{}字段?有沒有更直接的方法來做到這一點?func main() {    gd := generateGenericData()    fmt.Println(gd)    fmt.Println(gd.(GenericData))    // Doesn't work, but is straightforward    // fmt.Println(gd.(Data))    // Works, but is not straight forward    fmt.Println(Data{gd.(GenericData).Hard, gd.(GenericData).Soft.(int)})    genDataGenerator := returnsGenericDataGenerator()    // Doesn't work, but is straightforward    //genDataGenerator.(GenericDataGenerator)()    // Works, but is not straight forward    resp := genDataGenerator.(func() interface{})()    fmt.Println(resp.(GenericData))}代碼可以執(zhí)行在: https ://play.golang.org/p/_UVBi5It1FY
查看完整描述

1 回答

?
呼啦一陣風(fēng)

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

有沒有一種直接的方法可以將某些字段是“通用”(interface{})的結(jié)構(gòu)轉(zhuǎn)換為另一種具有相同字段名稱但“強類型”(int、string 等)的類型?

不。

一旦你明白這interface{}不是某種“通用”或“任意”類型,而是一種單一的“強類型”類型,就像stringor一樣,這就很明顯了int32。空接口interface{}是一個完全正常的類型,就像 auint16或 amap[float32]bool一樣。它是一種接口類型(與數(shù)字類型和映射類型的其他示例相反)并且它的方法集是空集。它與任何其他類型一樣嚴(yán)格或強類型。

您可以將任何值分配給類型變量的事實interface{}并不意味著interface{}以某種方式表示“任何類型”。您可以將值3,-1234435948(僅舉幾例)分配給 a int32。這是允許的,因為 a 的允許值范圍int32包含這些值(3、-1234、435948)。您可以將類型的值分配func(int) string給類型的變量interface{},因為允許的值范圍interface{}包含func(int)string。這是一個空洞的事實,而不是一個“通用”的事實。


查看完整回答
反對 回復(fù) 2023-06-19
  • 1 回答
  • 0 關(guān)注
  • 143 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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