登录
首页 >  Golang >  Go问答

_ Error = (*_Error)(nil) 这个是怎么理解?

来源:SegmentFault

时间:2023-01-09 14:05:43 317浏览 收藏

亲爱的编程学习爱好者,如果你点开了这篇文章,说明你对《_ Error = (*_Error)(nil) 这个是怎么理解?》很感兴趣。本篇文章就来给大家详细解析一下,主要介绍一下interface、go,希望所有认真读完的童鞋们,都有实质性的提高。

问题内容

在GitHub上看到的代码,如下:

var (

_ Error = (*_Error)(nil)

_ fmt.Stringer = (*_Error)(nil)

)

说明:

Error是一个interface

_Error是一个struct

判断struct是否实现了interface应该是这个写法吧

var _ Error = (*_Error){}

加(nil)
是什么意思呢??

正确答案

这个一个强制类型转换语法检测是否实现接口的功能,nil就是空指针地址就是0,我的这篇文章有介绍强制类型转换 https://segmentfault.com/a/1190000022255009

一个变量是具有类型和地址两个属性,强制类型转换只修改了类型,但是地址是原来那个(例如是nil),这样的转换的变量不用分配地址。

例如下列代码:

var _ Context = (*ContextBase)(nil)

nil的类型是nil地址值为0,利用强制类型转换成了*ContextBase,返回的变量就是类型为*ContextBase地址值为0,然后

Context=xx
赋值如果xx实现了Context接口就没事,如果没有实现在编译时期就会报错,实现编译期间检测接口是否实现。

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

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