加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

指针 – golang接口合规性编译类型检查

发布时间:2020-12-16 09:24:25 所属栏目:大数据 来源:网络整理
导读:我从camlistore( http://code.google.com/p/camlistore/source/browse/pkg/cacher/cacher.go)看到以下语句. var ( _ blobref.StreamingFetcher = (*CachingFetcher)(nil) _ blobref.SeekFetcher = (*CachingFetcher)(nil) _ blobref.StreamingFetcher = (*Di
我从camlistore( http://code.google.com/p/camlistore/source/browse/pkg/cacher/cacher.go)看到以下语句.

var (
        _ blobref.StreamingFetcher = (*CachingFetcher)(nil)
        _ blobref.SeekFetcher      = (*CachingFetcher)(nil)
        _ blobref.StreamingFetcher = (*DiskCache)(nil)
        _ blobref.SeekFetcher      = (*DiskCache)(nil)
)

我知道没有创建变量,并且语句确保编译器检查CachingFether实现StreamingFetcher和SeekFetcher的公共函数. RHS部分使用带有nil参数的指针构造函数语法.这种语法在Go语言中意味着什么?

解决方法

(* T)(零)是 Conversion.在这种情况下,它代表一个类型为零,即.例如,相同的值

var p *T

在给它分配任何东西之前.

转换的标准语法是T(expr),但*的优先级会错误地绑定它

*T(expr)

此语法意味着使用一个参数expr解除引用函数T的返回值.这就是转换具有替代语法的原因:

(T)(expr)

其中T当然可以是* U.因此

(*U)(expr)

是您在Camlistore存储库中看到的通用形式.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读