相关疑难解决方法(0)

如何分配或返回受联合约束的通用 T?

换句话说,如何为联合类型集中的不同类型实现特定于类型的解决方案?

鉴于以下代码...

type FieldType interface {
    string | int
}

type Field[T FieldType] struct {
    name         string
    defaultValue T
}

func NewField[T FieldType](name string, defaultValue T) *Field[T] {
    return &Field[T]{
        name:         name,
        defaultValue: defaultValue,
    }
}

func (f *Field[T]) Name() string {
    return f.name
}

func (f *Field[T]) Get() (T, error) {
    value, ok := os.LookupEnv(f.name)
    if !ok {
        return f.defaultValue, nil
    }
    return value, nil
}
Run Code Online (Sandbox Code Playgroud)

编译器显示错误:

field.go:37:9: cannot use value (variable of type string) as type T in …
Run Code Online (Sandbox Code Playgroud)

generics go type-switch

12
推荐指数
1
解决办法
9025
查看次数

标签 统计

generics ×1

go ×1

type-switch ×1