&deployment 如何滿足Kubernetes 程式碼中的型別runtime.Object
Kubernetes 程式碼的kubectl/run.go 檔案中,Gene 函數產生一個函數產生類型為runtime.Object的值列表。函數的最後一行將*extensionsv1beta1.Deployment 類型的值指派給第一個結果變量,該變數的類型註解為runtime.Object。這個賦值如何滿足類型約束?
嵌入元和提升方法
部署變數是 extensionsv1beta1.Deployment類型的局部變數。 Extensionsv1beta1.Deployment 嵌入了metav1.TypeMeta,其中包括 GetObjectKind() 方法。由於extensionsv1beta1.Deployment嵌入了此類型,extensionsv1beta1.Deployment和*extensionsv1beta1.Deployment(指向extensionsv1beta1.Deployment的指標)都提升了此方法的版本。同樣,extensionsv1beta1.Deployment 也有一個 DeepCopyObject() 方法。
方法集和介面實作
runtime.Object 是一個介面類型,指定方法集,包括GetObjectKind() 和 DeepCopyObject()。介面類型可以儲存任何類型的值,其方法集是介面方法集的超集。該類型據說實現了接口。
指標接收器方法
GetObjectKind() 和 DeepCopyObject() 的升級版本具有指標接收器。這表示 *extensionsv1beta1.Deployment 和 &deployment (指向部署變數的指標)在其方法集中都有所需的方法。
型別可分配性
因為 &deployment 實作所有runtime.Object所需的方法,都可以賦值給runtime.Object型別的變數。這與Go類型系統規則一致,即介面類型變數可以儲存實作該介面的任何類型的值。
因此,&deployment滿足runtime.Object的類型要求,因為:
以上是'*extensionsv1beta1.Deployment”變數如何滿足 Kubernetes 中的'runtime.Object”類型限制?的詳細內容。更多資訊請關注PHP中文網其他相關文章!