相关疑难解决方法(0)

将值文字分配给泛型类型的结构字段,而不会遇到 IncompleteAssign 错误

这可以:

type constraint interface {
    ~float32 | ~float64
}

type foo[T constraint] struct {
    val T
}

func (f *foo[float64]) setValToPi() {
    f.val = 3.14
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我更改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
}
Run Code Online (Sandbox Code Playgroud)

为什么包含不属于同一“类型组”的类型的约束会导致此错误,我应该如何处理它?

generics go

3
推荐指数
1
解决办法
1403
查看次数

标签 统计

generics ×1

go ×1