泛型结构中类型兼容的赋值
在 Go 中,泛型类型允许创建具有变量类型字段的结构。但是,为字段分配文字值有时会导致“IncompleteAssign”错误。
考虑以下代码:
type constraint interface { ~float32 | ~float64 } type foo[T constraint] struct { val T } func (f *foo[float64]) setValToPi() { f.val = 3.14 }
此代码可以编译,因为其约束接口仅包含浮点类型。但是,如果我们将整数类型添加到约束中:
type constraint interface { ~float32 | ~float64 | ~int } type foo[T constraint] struct { val T } func (f *foo[float64]) setValToPi() { f.val = 3.14 }
我们会遇到“IncompleteAssign”错误,因为无类型浮点常量无法直接分配给整数类型的字段。
错误原因
出现错误的原因是约束允许具有不同类型组的多种类型。将文字值分配给泛型类型的字段时,编译器无法在编译时确定该字段的确切类型。分配无类型浮点常量可能会导致将不兼容的类型分配给整数类型的字段,从而导致错误。
解决方案
要解决此错误,我们有几个选项:
结论
通过了解“IncompleteAssign”错误背后的原因,我们可以采取适当的解决方案来确保通用结构体字段的类型兼容性。
以上是在 Go 中为通用结构体字段赋值时如何避免'IncompleteAssign”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!