管理具有混合值約束的泛型類型中的不相容分配錯誤
在Go 中,泛型允許創建對其字段具有特定約束的類型。但是,在約束中混合不同類型群組時,將值文字指派給結構體欄位可能會導致 IncompleteAssign 錯誤。
考慮以下範例:
type constraint interface { ~float32 | ~float64 } type foo[T constraint] struct { val T } func (f *foo[float64]) setValToPi() { f.val = 3.14 }
此程式碼將文字 3.14 指派給 val foo[float64] 類型的欄位。這是可以接受的,因為 3.14 是有效的 float64 值。
但是,當約束擴展到包含int 類型時,會出現錯誤:
type constraint interface { ~float32 | ~float64 | ~int } type foo[T constraint] struct { val T } func (f *foo[float64]) setValToPi() { f.val = 3.14 // IncompatibleAssign: cannot use 3.14 (untyped float constant) as float64 value in assignment }
func (f *foo[float64]) setValToPi() { // ... }
func (f *foo[T]) SetValue(val T) { f.val = val }
以上是在 Go 泛型中使用混合型別約束時如何避免 IncompleteAssign 錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!