Kubernetes の kubectl/run.go コードでは、Generate 関数は次の結果リストを返します。 runtime.Object と error の 2 種類。ただし、関数の最後の行は return &deployment, nil であり、最初に &deployment が runtime.Object 型をどのように満たすことができるかという疑問が生じます。
runtime.Object は、 k8s.io/apimachinery/pkg/runtime パッケージで定義されたインターフェイス。これは、Kubernetes API の抽象オブジェクトを表します。インターフェイスを実装するには、型に次のメソッドが必要です。
この場合、deployment は、Kubernetes API タイプである extensionsv1beta1.Deployment タイプのローカル変数です。 extensionsv1beta1.Deployment は、GetObjectKind() メソッドを提供するmetav1.TypeMeta を拡張します。さらに、extensionsv1beta1.Deployment は DeepCopyObject() メソッドも直接実装します。
Go の & 演算子は、変数へのポインターを作成します。ポインタは、その基本型とは異なる型を持ちます。ただし、この場合:
Go 仕様によれば、インターフェイス型は、インターフェイスのスーパーセットであるメソッド セットを持つ任意の型の値を格納できます。この場合、*extensionsv1beta1.Deployment のメソッド セットは、runtime.Object のメソッド セットのスーパーセットです。したがって、&deployment は、Generate 関数の戻り値の型を満たす runtime.Object 型の変数に割り当てることができます。
以上がデプロイメント ポインターはどのようにして Kubernetes の runtime.Object インターフェイスを満たすのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。