「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > `&deployment` ポインタは Kubernetes の `runtime.Object` インターフェイスをどのように実現しますか?

`&deployment` ポインタは Kubernetes の `runtime.Object` インターフェイスをどのように実現しますか?

2024 年 11 月 8 日に公開
ブラウズ:730

 How Does the `&deployment` Pointer Fulfill the `runtime.Object` Interface in Kubernetes?

&deployment ポインターが runtime.Object インターフェイスを満たす方法

Kubernetes コードでは、kubectl/run.go の Generate 関数が返します。 runtime.Object とエラーを含む結果リスト。関数の最後の行 return &deployment, nil は、ローカル変数deploymentのアドレスを runtime.Object 型に割り当てます。

deployment は、extensionsv1beta1.Deployment 型のローカル変数です。この型には、ポインタ レシーバを備えた GetObjectKind() メソッドがある metav1.TypeMeta が埋め込まれています。したがって、埋め込みメソッドに対する Go のプロモーション ルールにより、Deployment へのポインタにもこのメソッドがあります。

さらに、Deployment にはポインタ レシーバを備えた「直接」 DeepCopyObject() メソッドがあるため、*Deployment のメソッド セットには次のものが含まれます。 GetObjectKind() と DeepCopyObject() の両方。

runtime.Object インターフェイスには、これら 2 つのメソッドを実装するための型が必要です。 *Deployment は両方のメソッドを実装するため、 runtime.Object.

に割り当てるのに有効な型です。インターフェイス型がメソッド セットを指定するため、型システムではこの割り当てが許可されます。インターフェイス型の変数は、インターフェイスのメソッド セットのスーパーセットであるメソッド セットを持つ任意の型の値を格納できます。この場合、*Deployment のメソッド セットは runtime.Object のメソッド セットのスーパーセットであるため、*Deployment は runtime.Object.

を実装するため、&deployment は Generate 関数の有効な戻り値になります。埋め込まれた *metav1.TypeMeta.

からのメソッド継承を通じて runtime.Object インターフェイスを満たすためです。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3