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

2023-11-21

我从 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)(nil) is a 转换。在这种情况下,它代表类型为 nil,即。相同的值,例如

var p *T

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

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

*T(expr)

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

(T)(expr)

where T当然可以*U。所以

(*U)(expr)

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

golang接口合规性编译类型检查 的相关文章

  • void* 指针的 C++ 替代品(不是模板)

    看来我对 C 有一个根本性的误解 我喜欢多态容器解决方案 谢谢你让我注意到这一点 所以 我们需要创建一个相对通用的容器类型对象 它还恰好封装了一些业务相关的逻辑 然而 我们需要在这个容器中存储基本上任意的数据 从原始数据类型到复杂类的所有数
  • Java:接口可以包含其中定义的常量变量吗?

    我可以创建吗public static final接口中的变量 我可以保留这些文件中定义的一些常见常量值吗 是的你可以 public interface Constants public static final int ZERO 0 然而
  • 为什么数组变量的地址与它本身相同? [复制]

    这个问题在这里已经有答案了 在 C 语言中 如果我们有一个像这样的数组a 10 then a and a具有相同的指针值 但类型不同 我想知道为什么C要这样设计 这是为了节省存储所需的额外空间吗 a 当您想到这一事实时 这是有道理的a永远不
  • 优化 golang 中的数据结构/字对齐填充

    与我在 C 中学到的类似 我相信填充导致了两个结构体实例大小的差异 type Foo struct w byte 1 byte x byte 1 byte y uint64 8 bytes type Bar struct x byte 1
  • Golang Appengine 项目无法构建

    我有一个使用 golang 的应用程序引擎项目 我已经大约一年没有碰过了 我现在无法让它在之前构建的机器上构建 我收到以下错误 go app builder 解析输入失败 解析器 src golang org x net internal
  • GO并发编程测试

    我试图确保我的并发程序不存在以下情况 僵局 livelock 饥饿 我找到了以下工具http blog golang org race detector http blog golang org race detector 我尝试编译并运行
  • 使用 crypto/ssh 的 golang scp 文件

    我正在尝试通过 ssh 下载远程文件 以下方法在 shell 上运行良好 ssh hostname tar cz opt local folder gt folder tar gz 然而 golang 上的相同方法在输出工件大小方面存在一些
  • 在 Java 中,对复杂模型使用接口是否会带来性能提升?

    标题很难理解 但我不知道如何以另一种方式总结 欢迎任何澄清的编辑 我被告知并建议使用接口来提高性能 即使在并不特别需要常规 接口 角色的情况下也是如此 在这种情况下 对象是大模型 MVC 意义上的 具有许多方法和字段 向我推荐的 好用处 是
  • Golang 按位运算以及一般字节操作

    我有一些 C 代码 可以对字节执行一些按位运算 我正在尝试在 golang 中做同样的事情 但遇到了困难 C 中的示例 byte a c byte data int j c data j c byte c j c a c 0xFF c 0x
  • 函数名前的星号有什么作用?

    我对在大多数具有我不熟悉的函数声明的 C 程序中看到的内容感到困惑 void func name void param 什么是 暗示该功能 我的理解 在变量类型中的特点是它创建一个指向另一个变量的指针 因此它可以跟踪后一个变量存储在内存中的
  • 按引用或按值扫描功能

    我有以下代码 statement SELECT id from source where mgmt 1 var exists string errUnique dr db QueryRow statement mgmt Scan exist
  • C# 4.0 动态对象和 WinAPI 接口,如 IShellItem(无需在 C# 源代码中定义它们)

    是否可以 使用 C 4 0 中的新动态关键字 使用接口 如 IShellItem 或其他 WinAPI 接口 而无需在 C 源代码中定义它们 或者至少不定义接口成员 我正在尝试类似的事情 const string IShellItemGui
  • 如何在golang模板上打印JSON?

    我需要在客户端有一个对象 所以我使用 json marshal 将其转换为 JSON 并将其打印到模板中 该对象被打印为转义 JSON 字符串 我期待它是var arr o1 o2 但它是var arr o1 o2 我知道我可以在客户端进行
  • C# 继承

    假设我有以下代码 interface ISomeInterface void DoSomething void A void B public abstract class ASomeAbstractImpl ISomeInterface
  • 我可以根据我正在构建的操作系统导入 Golang 包吗?

    假设我有一个基于哪个操作系统的 go 项目 在某些情况下是哪个发行版 我想使用 Systemd 客户端包 Upstart 客户端包 sysv 客户端包 launchd 客户端包 是否可以有选择地导入每个包 以便我只导入我正在构建的每个操作系
  • 在 Go 中使用电子邮件地址创建证书签名请求 (CSR)

    我尝试使用 crypto x509 包生成 CSR 但没有找到将 emailAddress 字段添加到其主题中的方法 根据文档证书申请 http golang org pkg crypto x509 CertificateRequest结构
  • 指向基类的成员指针

    全部 我不明白为什么下面的代码需要强制转换才能工作 有人可以解释一下吗 class Base class Derived public Base class Class public Derived member Derived obj B
  • 未强制执行 Typescript 抽象类静态方法

    我在 TypeScript 中有这个简单的代码 abstract class Config readonly NAME string readonly TITLE string static CoreInterface gt any cla
  • 触摸屏书写时需要注意什么?

    我正在启动一个新项目 其中涉及为机器开发一个接口 用于测量镜片的楔形和圆度 并将信息存储在数据库中并生成报告 我们很有可能会在这台机器上安装触摸屏 这样它就不需要鼠标或键盘了 我没有任何开发全尺寸触摸屏的经验 所以我正在向你们寻求建议 提示
  • 为什么我不能将一个非 const 指针传递给一个函数,该函数将以对 const 指针的引用作为其参数

    这是一个代码片段 希望能够传达我想要做的事情 void updatePointer const int i i int main int array 5 int arrayPtr array updatePointer arrayPtr r

随机推荐

  • COM 如何选择如何编组接口?

    据我了解 在 COM 中实现编组的方法有以下三种 类型库编组 代理 存根编组 通过对象实现 IMarshal 现在该组件如何consumer 用户 选择使用哪一个 它是自行决定并使用首选方式 还是调用某些内置函数并为其解决问题 我目前遇到以
  • 从必需的文件扩展 Node.js 中的 Array.prototype

    我将以下内容保存在 test js 中 它成功地在浏览器中扩展了Array 但它似乎不适用于node和require 有人可以解释这里出了什么问题吗 function Array prototype max function return
  • Angularjs 中的记住我功能和令牌

    我正在寻找更好的方法来解决我的问题 我的登录表单上有记住我的功能 当用户单击记住我框时 我的 API 会向我发送令牌 我的问题是存储此令牌并在用户返回我的网站时再次对用户进行身份验证的最佳方法是什么 我以为 创建一个 Cookie 并在其中
  • R 中给定函数的包名称[重复]

    这个问题在这里已经有答案了 可能的重复 如何确定函数的名称空间 我不知道该怎么做 你如何知道 R 中某个函数的包名称 我想要一个函数 给出函数的名称 返回拥有它的包的名称 有什么建议吗 可能有更好的解决方案 但是find functionn
  • 获取列中仅出现一次的值的数量

    首先 如果相关的话 我正在使用 MySQL 尽管我认为解决方案可以跨数据库产品工作 我的问题是 我有一个带有单列的简单表格 该列没有任何约束 此列中有一些简单的数据 例如 a a b c d d 我需要获取只出现一次的值的数量 计数 从上面
  • malloc分配的内存的保护标志是什么?

    根据这个线程 分配的内存malloc至少有PROT READ PROT EXEC 否则所包含的函数无法执行 man malloc没有提到任何有关保护的内容 因此提出了这个问题 malloc 通常会返回具有读写权限的内存 某些体系结构 例如
  • h.264 视频无法在 iOS 上播放

    我有一个用 h 264 编码的视频文件无法在 iOS 上播放 我想知道原因 这是 HTML
  • Android 应用程序中的 C# .dll 库

    我目前正在使用 Monodroid 开发 Android 应用程序 我对电话应用程序相当陌生 因此对以下几件事感到困惑 Android 库的定义是什么 我使用 Mono 模板创建 Android 库 创建 Mono for Android
  • 什么时候需要延迟加载?

    我懒惰地加载我的所有成员 我这样做已经有一段时间了 并且只是认为延迟加载从表面上看是一件好事 假设我们有 public class SomeClass public int anInt public SomeReferenceType me
  • 如何包含 CEFSharp 所需的 VC++ 可再发行文件

    使用 CEFSharp 浏览器构建应用程序在我的计算机上运行良好 但在服务器上崩溃并出现以下错误 System IO FileLoadException 无法加载 CefSharp Core dll 导入的过程 我在互联网上看到过这个问题
  • XHTML 中是否有类似于“colgroup”的名为“rowgroup”的属性?

    下列w3c文件提及rowgroup http www w3 org TR html401 struct tables html h 11 2 6 http www w3 org TR html401 struct tables html r
  • 如何在 VB6 中设置完整的内部版本号(Major.Minor.Build.Revision)

    How to set the complete version number from vb6 VPIaccessMaker vbg from Visual Basic i can set Major Minor Revision as 3
  • 像 Craigslist 一样的电子邮件转发 - Rails

    我正在尝试做 craigslist 的匿名电子邮件所做的事情 但使用 Rails 而且价格也便宜 对我来说 能够向电子邮件添加标头非常重要 这就是基本电子邮件转发不起作用的原因 我想到的一种方法是使用 SMTP 服务器 每当我通过 POP
  • 如何使用SQLAlchemy在SQLite上创建全文搜索索引并进行查询?

    我正在创建一个可以执行基本操作的简单应用程序 SQLite用作数据库 我想执行通配符搜索 但我知道它的性能很差 我想尝试全文搜索 但我无法完整提供示例 怎么做 我确认 SQLite 有全文搜索支持 这是我的示例代码 from flask s
  • 导入带有参数的 python 脚本

    我有脚本 移动1 py def move print walk 移动2 py def move print run And man py 可以接受通过参数参数 moving1 或 moving2 脚本来执行操作 man py import
  • Android gradle 插件 multidex ZipException [重复]

    这个问题在这里已经有答案了 我正在尝试使用新的 multidex 选项 但出现以下错误 Execution failed for task packageAll Variant TestClassesForMultiDex gt java
  • rake asset:预编译未定义的方法目录?对于 nil:NilClass

    在尝试对生产网站进行资产 预编译时 我第一次遇到此错误 rake assets precompile undefined method directory for nil NilClass 我之前已经成功更新过网站并做过多次资产 预编译 完
  • BaseDexClassLoader 中意外崩溃

    这次崩溃发生在我们应用程序的 1800 个用户身上 每月活跃用户数为 1 2 根据 Google 开发者控制台 相当罕见 但它确实发生了 Android 4 1 高达 6 但报告中没有 Android 7 BaseDexClassLoade
  • 读取Java字节码指令:数字意味着什么?

    我在阅读java字节码时看到了这个 getfield 5 Field java lang String name 什么是 5 mean 如何用字节码编写程序 Java 类文件和字节码 Java 类文件 字节码文件 由不同的组件组成 http
  • golang接口合规性编译类型检查

    我从 camlistore 看到以下声明 http code google com p camlistore source browse pkg cacher cacher go var blobref StreamingFetcher C