ホームページ  >  記事  >  バックエンド開発  >  `&deployment` ポインタは Kubernetes の `runtime.Object` インターフェイスをどのように実現しますか?

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

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-27 21:21:02660ブラウズ

 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 インターフェイスを満たすためです。

以上が`&deployment` ポインタは Kubernetes の `runtime.Object` インターフェイスをどのように実現しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。