换句话说,如何为联合类型集中的不同类型实现特定于类型的解决方案?
鉴于以下代码...
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)