Kubernetes コードのタイプ runtime.Object を満たす方法(&deployment)
Kubernetes コードの kubectl/run.go ファイル内の Generate 関数runtime.Object 型の値のリストを生成します。関数の最後の行では、タイプ *extensionsv1beta1.Deployment の値を最初の結果変数に割り当てます。この変数には、runtime.Object というタイプの注釈が付けられます。この割り当てはどのように型制約を満たしますか?
埋め込みメタおよびプロモートされたメソッド
デプロイメント変数は、extensionsv1beta1.Deployment 型のローカル変数です。 extensionsv1beta1.Deployment には、GetObjectKind() メソッドを含むmetav1.TypeMeta が埋め込まれています。 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 中国語 Web サイトの他の関連記事を参照してください。