亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

Go泛型:泛型類型約束的語法

Go泛型:泛型類型約束的語法

Go
蕭十郎 2022-12-19 21:35:05
在 Go Language reference 中,關于Type parameter declarations的部分,我看到[P Constraint[int]]了一個類型參數示例。這是什么意思?如何在通用函數定義中使用此結構?
查看完整描述

2 回答

?
楊__羊羊

TA貢獻1943條經驗 獲得超7個贊

它是一個類型參數列表,如您鏈接的段落中所定義,它有一個類型參數聲明:

  • P作為類型參數名稱

  • Constraint[int]作為約束

whereasConstraint[int]是泛型的實例化(您必須始終在使用時實例化泛型)。

在語言規范的那段中,Constraint沒有定義,但它可以合理地成為一個通用接口:


查看完整回答
反對 回復 2022-12-19
?
繁星coding

TA貢獻1797條經驗 獲得超4個贊

type Constraint[T any] interface {

    DoFoo(T)

}


type MyStruct struct {}


// implements Constraint instantiated with int

func (m MyStruct) DoFoo(v int) { 

    fmt.Println(v)

}

您可以像使用任何類型參數約束一樣使用它:


func Foo[P Constraint[int]](p P) {

    p.DoFoo(200)

}


func main() {

    m := MyStruct{} // satisfies Constraint[int]

    Foo(m)

}

游樂場:https ://go.dev/play/p/aBgva62Vyk1


查看完整回答
反對 回復 2022-12-19
  • 2 回答
  • 0 關注
  • 137 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號