登录
首页 >  Golang >  Go问答

Golang 泛型类型的默认值

来源:stackoverflow

时间:2024-02-15 17:15:22 203浏览 收藏

哈喽!大家好,很高兴又见面了,我是golang学习网的一名作者,今天由我给大家带来一篇《Golang 泛型类型的默认值》,本文主要会讲到等等知识点,希望大家一起学习进步,也欢迎大家关注、点赞、收藏、转发! 下面就一起来看看吧!

问题内容

我正在测试 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 值,因此无法编译。通常,您将返回一个指针或任何“nilable”类型。然而,当使用泛型时,似乎没有任何类型能让编译器满意。我找不到任何处理此示例的在线资源。


正确答案


您可以使用 *new(t) 创建“零”值,它会返回您所期望的值。

您可以在此处使用 *new(t) - https://go.dev/play/p/7e7zGKMgoRW

更多信息 - https://stackoverflow.com/a/70589302/4108803

原始答案,

嗯,刚刚尝试过

func Do[T any](value T) (T, bool) {
     if guardCondition {
         var noop T
         return noop, false
     }
     ... // rest of function
}

这就是窍门:)

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>