了解接口内部接口(嵌入式接口)

2024-01-27

我试图用以下代码来理解接口嵌入。

我有以下内容:

type MyprojectV1alpha1Interface interface {
    RESTClient() rest.Interface
    SamplesGetter
}

// SamplesGetter has a method to return a SampleInterface.
// A group's client should implement this interface.
type SamplesGetter interface {
    Samples(namespace string) SampleInterface
}

// SampleInterface has methods to work with Sample resources.
type SampleInterface interface {
    Create(*v1alpha1.Sample) (*v1alpha1.Sample, error)
    Update(*v1alpha1.Sample) (*v1alpha1.Sample, error)
    Delete(name string, options *v1.DeleteOptions) error
    DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error
    Get(name string, options v1.GetOptions) (*v1alpha1.Sample, error)
    List(opts v1.ListOptions) (*v1alpha1.SampleList, error)
    Watch(opts v1.ListOptions) (watch.Interface, error)
    Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1alpha1.Sample, err error)
    SampleExpansion
}

现在如果我有以下内容:

func returninterface() MyprojectV1alpha1Interface {
//does something and returns me MyprojectV1alpha1Interface
}
temp := returninterface()

现在,如果我想从 MyprojectV1alpha1Interface 调用

创建SampleInterface函数

我需要做什么?

另外,请解释一下这个接口在 Golang 中是如何工作的。


在这个定义中:

type MyprojectV1alpha1Interface interface {
    RESTClient() rest.Interface
    SamplesGetter
}

Your MyprojectV1alpha1Interface嵌入SamplesGetter界面。

将一个接口嵌入另一个接口意味着嵌入接口的所有方法(SamplesGetter)可以通过嵌入接口(MyprojectV1alpha1Interface).

这意味着您可以调用任何SamplesGetter任何实现的对象上的方法MyprojectV1alpha1Interface.

所以一旦你得到一个MyprojectV1alpha1Interface对象在你的temp变量,你可以调用Samples方法(用合适的namespace,我无法从您发布的代码中猜测):

sampleInt := temp.Samples("namespace here")

sampleInt然后会有一个SampleInterface对象,这样你就可以调用Create使用你的函数sampleInt多变的:

sample, err := sampleInt.Create(<you should use a *v1alpha1.Sample here>)

有关接口如何工作的更多详细信息,我建议您查看官方规范和示例:

https://golang.org/ref/spec#Interface_types https://golang.org/ref/spec#Interface_types

https://gobyexample.com/interfaces https://gobyexample.com/interfaces

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

了解接口内部接口(嵌入式接口) 的相关文章

  • 限制 FormFile 中的文件大小

    我让用户使用 FormFile 上传文件 我应该在什么时候检查文件大小是否太大 当我做 file header fileErr r FormFile file 文件对象已经创建 那么我是否已经产生了读取整个文件的成本 https golan
  • 无法将字符串解组为 int64 类型的 Go 值

    我有结构 type tySurvey struct Id int64 json id omitempty Name string json name omitempty I do json Marshal在 HTML 页面中写入 JSON
  • K8s更改配置映射并更新应用程序日志级别

    我想更改在 K8S 上运行的 Golang 应用程序的登录配置 我在本地尝试了以下代码 它按预期工作 我正在使用 viper 来监视配置文件更改 这是带有日志配置的配置图 apiVersion v1 kind ConfigMap data
  • 如何使用 go web 服务器提供静态 html 文件?

    如何使用 go web 服务器提供 index html 或其他静态 HTML 文件 我只想要一个基本的静态 HTML 文件 例如一篇文章 我可以从 Go Web 服务器提供该文件 HTML 应该可以在 go 程序之外进行修改 就像使用 H
  • Go 编程 - 使用指针绕过访问权限

    假设我的项目有以下层次结构 fragment fragment go main go 并且在fragment go我有以下代码 只有一个 getter 没有 setter package fragment type Fragment str
  • 优化 golang 中的数据结构/字对齐填充

    与我在 C 中学到的类似 我相信填充导致了两个结构体实例大小的差异 type Foo struct w byte 1 byte x byte 1 byte y uint64 8 bytes type Bar struct x byte 1
  • 如何在 Goji (Golang) 中使用不同的中间件创建单独的路由组?

    我正在使用Goji https github com zenazn goji https github com zenazn goji 并希望定义具有自己的中间件的路由组 例如 下面的所有路径 company应使用 LDAP 身份验证并定义
  • 无法连接到代理“证书由未知机构签名”

    我正在尝试通过 Kubernetes 部署上的 cloudsql proxy 容器连接到 CloudSQL 实例 我已安装 cloudsql 凭据以及值GOOGLE APPLICATION CREDENTIALS set 但是 我的日志中仍
  • Go 中的 WebP 编码器/解码器

    是否有一个完整的 WebP 编码器和解码器与当前每周 或可分叉 兼容 它的速度与标准 png 相当吗 这个人在 GitHub 上有一个包 其中包含 WebP 的编码器和解码器 https github com chai2010 webp h
  • 为什么我的 SQL 占位符没有被替换(使用 Go pq)?

    根据文档 我正在这样做 var thingname string asdf var id int err database QueryRow SELECT id from things where thing thingname Scan
  • 如何将未知字段类型的数据解组为 JSON

    我有这些 结构 type Results struct Gender string json gender Name struct First string json first Last string json last json nam
  • Golang 基础知识 struct 和 new() 关键字

    我正在学习 golang 当我阅读描述结构的章节时 我遇到了初始化结构的不同方法 p1 passport var p2 passport p3 passport Photo make byte 0 0 Name Scott Surname
  • 投射回更专业的界面

    我正在用 Go 编写一个游戏 在 C 中 我将所有实体类存储在 BaseEntity 类的数组中 如果一个实体需要在世界中移动 那么它将是一个从 BaseEntity 派生的 PhysEntity 但添加了方法 我尝试模仿这是 go pac
  • 完全删除使用“go get”安装的软件包?

    我正在使用 Go 1 13 1 最新版本 我正在尝试完全删除我安装的软件包go get来自 GitHub 这go clean i
  • 在处理程序之后访问 HTTP 请求上下文

    在我的日志记录中间件 链中的第一个 中 我需要访问一些在链下游的某些身份验证中间件中编写的上下文 并且仅在处理程序本身执行之后 旁注 需要首先调用日志记录中间件 因为我需要记录请求的持续时间 包括在中间件中花费的时间 此外 当权限不足时 身
  • 重新插入通道导致死锁

    我有稳定的入站 作业 流 将其输入到无缓冲通道中 我有一个for range循环来迭代项目并处理它们 如果处理该项目失败 我会将项目重新插入通道中 以便稍后重试 问题是当我将项目重新插入通道时 它陷入僵局 我明白为什么会发生这种情况 处理器
  • Golang中如何获得100%的代码覆盖率? [复制]

    这个问题在这里已经有答案了 我无法获得 100 的代码覆盖率 因为我无法在 Golang 中测试 Fatals 我发现了一些问答 包括this one https stackoverflow com questions 30688554 h
  • 使用 Gorilla 会话自定义后端有什么优势?

    我想使用 Redis 进行会话管理 但我不明白使用 Redis 作为 Gorilla 会话包的自定义后端比直接使用它有什么优势 Gorilla 会话包的链接 http www gorillatoolkit org pkg sessions
  • benchmem 的输出

    使用内存分析器运行基准测试时 我看到以下输出 SomeFunc 100 17768876 ns op 111 B op 0 allocs op 我不明白输出 0 allocs op 但分配了 111 B 知道这意味着什么吗 我的函数是否在堆
  • 是否可以使用 go:generate 重定向 stdin/stdout

    我有一个充当管道的工具 它从标准输入读取数据并将源代码写入标准输出 是否可以设置输入 输出重定向并将此类工具与 go generate 一起使用 就像是 go generate tool lt file txt gt file go 我想出

随机推荐

  • 在 Java 中使用 Xquery 处理器的 OSB fn-bea 函数

    您好 我正在尝试使用 Oracle 的 Java Xquery 处理器对 OSB 中使用的 xqueries 进行单元测试 参考下面的链接 http docs oracle com database 121 ADXDK adx j xqj
  • Excel 2010 中的简单 HLOOKUP 失败

    我有一个 Excel 电子表格 由电子表格设备生成 但这更多的是 Excel 问题 当我使用时它无法正常工作HLOOKUPS http office microsoft com en us excel help hlookup HP0052
  • C#/MEF 无法使用没有无参数构造函数的基类

    我有一个 Prim 类 它实现 MEF 的 IPrimitiveDecomposer 接口并继承 Node 基类 public class Node public Node public interface IPrimitiveDecomp
  • 套接字编程:recv()

    我有一个应用程序 其中各个实体通过套接字相互通信 并且我使用 C 编程语言 当一个实体向另一个实体发送长消息时 recv 函数可能会部分读取该消息 因此 我必须通过附加所有收到的部分来重新构造接收方的消息 我的问题是与recv 相关的一般套
  • 未解决的参考:build.gradle.kts 中的compileKotlin

    Kotlin项目通过build gradle成功构建 compileKotlin kotlinOptions jvmTarget JavaVersion VERSION 1 8 compileTestKotlin kotlinOptions
  • WebClient() 可以同时下载多个字符串吗?

    我的意思是我可以做这样的事情 var client new WebClient var result client DownloadString string http example com add php var result2 cli
  • 在 Windows 7 上执行 Fabric python 代码

    我正在尝试导入 Fabric 以用于我的 Python 版本 3 3 代码如下 fabfile py from fabric api import def hello print Hello world 但是在执行 C gt fab hel
  • Python - 检查类是否存在

    有没有办法检查类是否已定义 存在 我的菜单上有不同的选项 其中一些需要继承变量 因此如果您在设置变量之前尝试选择该函数 它会崩溃 我的课程名为 Gen0 我通过简单地输入 class Gen0 接下来是设置变量的其余代码 对于上下文 我正在
  • Reset_cooldown Discord.py

    我对discord py 和Python 都很陌生 但我正在努力学习 我不知道如何将 command reset cooldown 添加到我的代码中 正如下面代码中所说 我希望 test 忽略冷却时间 但我希望 test 2 有冷却时间 有
  • Spring Boot 中的 JAX-RS 和 MVC

    我有一个作为 MVC 工作的 Spring Boot 应用程序 我想在我的应用程序中使用 JAX RS 而不使用 Spring 注释 我将在不同的类中同时拥有 JAX RS 带注释的组件和 MVC 组件 当我添加 Jersey 资源配置时
  • Boost Container向量可以通过非原始指针管理内存吗?

    我有一个类似指针的结构来代替指针 与指针的区别在于它具有额外的信息 也是特殊的 分配器可以用来释放内存 这种类似指针的结构适用于所有基本用途 我可以分配和释放内存 解引用 增量 gt etc 现在我想使用这个指针来由类似STL的容器来管理
  • 邮递员到普罗米修斯和马车“\r”?第 1 行中的文本格式解析错误:预期浮点数作为值,得到“1\r”

    只是试图通过邮递员向普罗米修斯添加新的指标 但是得到 第 1 行中的文本格式解析错误 预期浮点数作为值 得到 1 r 度量就像 test metric 1 不带引号 为什么会发生这种情况以及如何将其从邮递员的请求中删除 原因在于之间的差异
  • 这里使用指针向量是不必要的还是更糟,会导致内存泄漏?

    我对 C 编程相对较新 但我是一名有 10 年经验的 C 程序员 因此我对对象的指针比对对象的引用更熟悉 我正在编写一款纸牌游戏 这种设计不安全吗 有没有更好的办法 无论如何 我还有课SolitaireGame class Solitair
  • 如何动态获取程序集名称[重复]

    这个问题在这里已经有答案了 我在图书馆里有一堂课是这样的 namespace Foo public abstract class EventBase public string EventSource gt Assembly GetExec
  • IE9 中的 iframe 中未发送 Cookie

    首先 我在发布这个问题之前做了一些研究 所以我知道P3P政策 https stackoverflow com questions 389456 cookie blocked not saved in iframe in internet e
  • php 多个 if 语句?

    抱歉 这看起来像是一个菜鸟问题 今天早上我的大脑无法运转 我正在尝试执行多个if声明 但他们的行为不正确 在找到它正在寻找的模板后 它似乎总是加载最少的模板 做这样的事情的最好方法是什么 post wp query gt post if i
  • 如何用Python中的其他字符替换字符串中的unicode字符?

    我有一个从阅读带有项目符号的 HTML 网页中获得的字符串 由于项目符号列表 这些项目符号具有类似 的符号 请注意 文本是来自使用 Python 2 7 的网页的 HTML 源代码urllib2 read webaddress 我知道项目符
  • 将物理网卡绑定到docker容器

    我的主机 PC 上安装了 4 个 NIC 我想启动不同的 docker 容器 并将不同的物理网卡绑定到每个容器 我能为docker做些什么 对于 VirtualBox 这可以通过为物理网卡的每个虚拟机创建桥接适配器来完成 当您使用 Dock
  • 版权元标记在 HTML5 中有效吗?

    W3C 验证器输出 第 5 行 第 41 列 元素元上的属性名称版权值错误 未注册关键字版权 我需要设置版权 任何想法 都柏林核心提出rightsHolder https www dublincore org specifications
  • 了解接口内部接口(嵌入式接口)

    我试图用以下代码来理解接口嵌入 我有以下内容 type MyprojectV1alpha1Interface interface RESTClient rest Interface SamplesGetter SamplesGetter h