首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >golang接口遵从编译类型检查

问golang接口遵从编译类型检查
EN

Stack Overflow用户
提问于 2013-08-01 12:47:21
回答 1查看 3.5K关注 0票数 8

我看到了camlistore(http://code.google.com/p/camlistore/source/browse/pkg/cacher/cacher.go)的以下声明。

代码语言:javascript
复制
var (
        _ blobref.StreamingFetcher = (*CachingFetcher)(nil)
        _ blobref.SeekFetcher      = (*CachingFetcher)(nil)
        _ blobref.StreamingFetcher = (*DiskCache)(nil)
        _ blobref.SeekFetcher      = (*DiskCache)(nil)
)

我理解没有创建变量,这些语句确保编译器检查CachingFether是否实现了StreamingFetcher和SeekFetcher的公共函数。RHS部分使用带nil参数的指针构造函数语法。这个语法在Go语言中意味着什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-01 12:50:49

(*T)(nil)是转换。在这种情况下,它代表输入的零.相同的值,例如,

代码语言:javascript
复制
var p *T

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

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

代码语言:javascript
复制
*T(expr)

这个语法意味着用一个参数T取消引用函数expr的返回值。这就是为什么转换有另一种语法:

代码语言:javascript
复制
(T)(expr)

当然,T可以是*U。因此

代码语言:javascript
复制
(*U)(expr)

是您在Camlistore存储库中看到的广义形式。

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17994519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档