登录
首页 >  Golang >  Go问答

在 Golang 中能否给 nil 另起别名

来源:stackoverflow

时间:2024-02-24 20:00:27 258浏览 收藏

在Golang实战开发的过程中,我们经常会遇到一些这样那样的问题,然后要卡好半天,等问题解决了才发现原来一些细节知识点还是没有掌握好。今天golang学习网就整理分享《在 Golang 中能否给 nil 另起别名》,聊聊,希望可以帮助到正在努力赚钱的你。

问题内容

在组织我的项目时,我在很多地方观察到零比较。我希望将 nil 替换为 nullnull。我尊重 golang 规范,但我很好奇我们是否可以做到这一点。

我已经为 interface{}context.context 做了如下操作。

type CON = context.Context 
type Any = interface{}

正确答案


你不能。你所显示的是类型别名。 nil 不是一种类型。它是多种不同类型的值。您可能希望可以创建一个值为 nil 的常量,类似于如何创建一个值为 0 的常量,但编译器明确不允许这样做:

const null = nil

错误:const 初始值设定项不能为 nil

根据language specification

有布尔常量、符文常量、整型常量、浮点常量、复数常量和字符串常量。

这些类型都不能有 nil 值,因此 nil 常量是不可能的。

您也可以尝试创建一个保存值 nil 的变量,但是您会发现如果不声明变量的类型,它就不起作用的问题:

var NULL = nil

错误:use 为非类型化 nil

您可以通过向变量添加 nilable 类型来使其合法,但这样它就不再很有用,因为它只能与该特定类型进行比较。

理论要掌握,实操不能落!以上关于《在 Golang 中能否给 nil 另起别名》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

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