通用类型的 golang 零值
golang zero value for generic types
我正在测试 golang 的 1.18beta2 版本。我有这个功能:
func Do[T any](value T) (T, bool) {
if guardCondition {
return nil, false // Complains about "cannot use nil as T value in return statement"
}
... // rest of function
}
由于 不能在 return 语句 中使用 nil 作为 T 值,因此无法编译。通常,您会 return 一个指针或任何“nilable”类型。但是,当使用泛型时,似乎没有类型会取悦编译器。我找不到任何处理此示例的任何类型的在线资源。
嗯,刚试过
func Do[T any](value T) (T, bool) {
if guardCondition {
var noop T
return noop, false
}
... // rest of function
}
这就是诀窍:)
我正在测试 golang 的 1.18beta2 版本。我有这个功能:
func Do[T any](value T) (T, bool) {
if guardCondition {
return nil, false // Complains about "cannot use nil as T value in return statement"
}
... // rest of function
}
由于 不能在 return 语句 中使用 nil 作为 T 值,因此无法编译。通常,您会 return 一个指针或任何“nilable”类型。但是,当使用泛型时,似乎没有类型会取悦编译器。我找不到任何处理此示例的任何类型的在线资源。
嗯,刚试过
func Do[T any](value T) (T, bool) {
if guardCondition {
var noop T
return noop, false
}
... // rest of function
}
这就是诀窍:)