我正在测试 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
}
Run Code Online (Sandbox Code Playgroud)
由于不能在 return 语句中使用 nil 作为 T 值,因此无法编译。通常,您将返回一个指针或任何“nilable”类型。然而,当使用泛型时,似乎没有任何类型能让编译器满意。我找不到任何处理此示例的在线资源。
son*_*ico 18
您可以使用*new(T)它返回您期望的值来创建“零”值。
您可以在这里玩一下*new(T)- https://go.dev/play/p/7e7zGKMgoRW。
更多信息 - /sf/answers/4941251171/。
原来的答案,
好吧,刚刚尝试过
func Do[T any](value T) (T, bool) {
if guardCondition {
var noop T
return noop, false
}
... // rest of function
}
Run Code Online (Sandbox Code Playgroud)
这就是窍门:)