【发布时间】:2022-10-18 03:33:27
【问题描述】:
这可以:
type constraint interface {
~float32 | ~float64
}
type foo[T constraint] struct {
val T
}
func (f *foo[float64]) setValToPi() {
f.val = 3.14
}
但是,如果我将 constraint 更改为也包含 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
}
为什么包含不属于同一“类型组”的类型的约束会导致此错误,我应该如何处理?
【问题讨论】: