日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

Golang是一種靜態類型的編程語言,它在實現泛型的過程中一直備受關注。最近,Golang團隊在設計泛型的方案上取得了重大突破,使得開發者能夠訪問“any”類型泛型上的字段。這個新特性為Golang帶來了更強大的靈活性和擴展性。接下來,我們將由php小編西瓜為您詳細介紹Golang上訪問“any”類型泛型上字段的方法與應用場景。

問題內容

我正在使用第三方函數,其泛型類型為 any。該函數返回一個傳遞給它的類型的對象,而我自己的代碼則針對該返回的東西起作用。

我正在嘗試編寫自己的泛型函數,該函數接受 HasID 類型的泛型,然后將其傳遞給第三方函數。但是,當我嘗試訪問第三方函數返回值的 ID 字段時,出現錯誤。

我需要做什么才能正確輸入此內容?

type HasID struct {
    ID string `json:"id"`
}

func ThirdPartyFunc[T any]() T {
  // do some stuff
  return someThing // of type T
}

func MyFunc[U HasID]() {
  thingWithID := ThirdPartyFunc[U]()
  fmt.Println(thingWithID.ID) // undefined (type U has no field or method ID)
}

登錄后復制

解決方法

我同意 @mkopriva 的評論,但我認為這可能是因為您“無法”在約束上定義字段,因此您無法在類型參數中訪問這些字段。

(Go 1.19 中可能沒有改變,哈哈)

為了簡單起見,就像你會做的那樣:

type HasID struct {
    ID string `json:"id"`
}

func MyFunc[U HasID](hasID U) {
    fmt.Println(hasID.ID) // hasID.ID undefined (type U has no field or method ID)

}

登錄后復制

https://www.php.cn/link/bddcda5d65fcfdec9de3838794a77265

但是如果您將其定義為接口,您將可以訪問其方法:

type HasID interface {
    ID() string
}

func MyFunc[U HasID](hasID U) {
    fmt.Println(hasID.ID()) // compiles V
}

登錄后復制

https://www.php.cn/link/46dfb1fd21d4e16401260f54d2b6a88a

為了處理結構,您需要進行一些類型轉換:

type HasID struct {
    ID string `json:"id"`
}

func MyFunc[U HasID](hasID U) {
    thingWithID := HasID(hasID)
    fmt.Println(thingWithID.ID)
}

登錄后復制

P.S – 從 02/2022 開始有一個未解決的問題 – https://github .com/golang/go/issues/51259

P.S – 哦,我剛剛發現… – 如何使用泛型訪問結構體字段(類型 T 沒有字段或方法)?

分享到:
標簽:overflow
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定