在kubectl/run.go
Kubernetes代码中,该Generate
函数具有以下两种类型的结果列表:
runtime.Object, error
该函数的最后一行是:
return &deployment, nil
runtime
进口:
k8s.io/apimachinery/pkg/runtime
我runtime
通过go get
在该import语句上运行而得到,对象在中定义interfaces.go
:
type Object interface {
GetObjectKind() schema.ObjectKind
DeepCopyObject() Object
}
(并且我在这里在网上找到了相同的代码。)
地址运算符会创建一个指针…更具体地说,Go规范指出:
对于类型T的操作数x,地址操作&x生成指向 T的类型 T的指针。
和指针的类型不同于其基本类型:
指针类型表示指向给定类型的变量的所有指针的集合,称为指针的基本类型。
如何&deployment
满足runtime.Object
类型?
我最好的猜测,到目前为止是deployment
实现了runtime.Object
接口,并映射&deployment
到runtime.Object
满足可转让的这条规则:
T是接口类型,并且x实现T。
在这方面,映射到结果列表类型的return语句语句等效于赋值。这样对吗?如果没有,规范或文档中是否还有其他部分对此进行了说明?
deployment
是局部变量,其声明:
deployment := extensionsv1beta1.Deployment{
// ...
}
extensionsv1beta1
从哪里进口:
import (
// ...
extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
// ...
)
的文档extensionsv1beta1.Deployment
。其定义是:
type Deployment struct {
metav1.TypeMeta `json:",inline"`
// ...other fields...
}
它嵌入了metav1.TypeMeta
,它有一个GetObjectKind()
带有指针接收器的方法。这意味着指向的指针Deployment
也具有此方法,因为Spec:Struct类型:
给定一个结构类型
S
和一个定义的类型T
,提升的方法包括在该结构的方法集中,如下所示:
- 如果
S
包含嵌入式字段T
,则S
和的方法集*S
都包括带有接收方的提升方法T
。
方法集*S
还包括带有接收方的提升方法*T
。
并Deployment
具有“直接”
DeepCopyObject()
方法,再次使用指针接收器。因此,设置方法的*Deployment
包含此方法。
最后引用Spec:接口类型:
接口类型指定一个称为其 接口 的方法集。
接口类型的变量可以使用方法集合存储任何类型的值,该方法集是接口的任何超集。* 据说这种类型 实现了接口 。 __ * __
因此,这意味着的方法集*Deployment
具有定义的所有方法Object
,或换句话说:的方法集*Deployment
是的方法集的超集Object
,因此*Deployment
实现Object
。
deployment
是类型的extensionsv1beta1.Deployment
,这意味着&deployment
类型*extensionsv1beta1.Deployment
,我们在上面展示了它的实现Object
;
因此,该值&deployment
可以分配给或存储在type变量中Object
。
我们提供了邀约券和出行券两类券种,助力您的业务增长,升级客户服务。通过这两类券种,可实现客户到店体验、会员增值服务、积分礼品兑换等多种场景,并支持券面内容企业自由定制,真正地实现预算可控,帮助企业高效管理。
我觉得我一定忽略了什么。 null Grunt@0.4.2应该匹配所有这些依赖项,但npm说它不匹配,安装失败。我是不是忽略了什么? 根据请求,我的package.json文件:
我正在尝试使用boto构建DynamoDB表,这将在表中保存IAM策略的各个方面。我已经为keyschema定义了属性,我不理解错误。我对DYanmoDB和AWS非常陌生。这是我的代码: 这就是我得到的错误: botocore.exceptions.ClientError:调用CreateTable操作时发生错误(ValidationException):检测到1个验证错误:值'[com.amaz
在编写实现类文件接口的类时,我们可以从模块继承一个抽象基类,例如,如图所示,使迭代器在Python中表现得像类文件对象。 另一方面,在类型注释中,我们应该使用从<code>类型派生的类。IO</code>(例如<code>TextIO</code>)表示这样的对象,如文件或类文件对象的类型提示所示?或io的类型检查问题。联合中的TextIOBase。 然而,这似乎并不像我预期的那样有效: 在这段代
pip识别全局安装的软件包-( 我用VirtualVWrapper预激活钩子清理蟒蛇, 然后echo$PYTHONPATH返回空字符串,但这没有帮助。 发生了什么?
问题内容: 给出以下Go代码示例: 我可以使用tourGuide类型的变量或指向tourGuide的指针来调用结构的两个方法。换句话说,我可以使用类型为或的变量来使用Receiver 调用方法。类似地,我可以调用一个方法使用类型的变量接收机(如果是可寻址的)或。我了解编译器会在此处处理这些差异(请参见代码中的注释)。 但是,当我们实现接口时,情况会发生变化。在上面的代码中,类型为interface