通用类型的 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
}

这就是诀窍:)