首頁 > 後端開發 > Golang > 如何保證 Go 泛型中的現場存在?

如何保證 Go 泛型中的現場存在?

Susan Sarandon
發布: 2024-12-17 19:19:14
原創
187 人瀏覽過

How Can I Guarantee Field Presence in Go Generics?

確保泛型函數中存在欄位

在Go 中,建立接受特定欄位的值的泛型函數可能具有挑戰性。使用泛型,我們可以嘗試強制執行此類約束,如下例所示:

package main

import (
    "fmt"
)

func Print[T IDer](s T) {
    fmt.Print(s.ID)
}

func main() {
    Print(Person{3, "Test"})
}

type IDer interface {
    ~struct{ ID int }
}

type Person struct {
    ID   int
    Name string
}

type Store struct {
    ID     int
    Domain string
}
登入後複製

但是,這種方法會失敗,因為 Go 1.18 的泛型實作缺乏結構類型支援。因此,我們無法利用這種機制來保證傳遞值中存在特定欄位。

因此,在 Go 中,在處理聯合或確保欄位時,有必要在介面中定義方法來存取公用欄位存在於泛型函數中。

以上是如何保證 Go 泛型中的現場存在?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板