Im kubectl/run.go-Code von Kubernetes gibt die Generate-Funktion eine Ergebnisliste zurück, die Folgendes enthält: zwei Typen: runtime.Object und error. Allerdings lautet die letzte Zeile der Funktion return &deployment, nil, was zunächst die Frage aufwirft, wie &deployment den runtime.Object-Typ erfüllen kann.
runtime.Object ist ein Schnittstelle, die im Paket k8s.io/apimachinery/pkg/runtime definiert ist. Es stellt ein abstraktes Objekt in der Kubernetes-API dar. Um die Schnittstelle zu implementieren, muss ein Typ über die folgenden Methoden verfügen:
In diesem Fall handelt es sich bei der Bereitstellung um eine lokale Variable vom Typ extensionsv1beta1.Deployment, bei der es sich um einen Kubernetes-API-Typ handelt. extensionsv1beta1.Deployment erweitert metav1.TypeMeta, das die Methode GetObjectKind() bereitstellt. Darüber hinaus implementiert extensionsv1beta1.Deployment auch direkt die DeepCopyObject()-Methode.
Der &-Operator in Go erstellt einen Zeiger auf die Variable. Zeiger haben einen anderen Typ als ihr Basistyp. In diesem Fall gilt jedoch Folgendes:
Gemäß der Go-Spezifikation kann ein Schnittstellentyp einen Wert eines beliebigen Typs mit einem Methodensatz speichern, der eine Obermenge der Schnittstelle darstellt. In diesem Fall ist der Methodensatz von *extensionsv1beta1.Deployment eine Obermenge des Methodensatzes von runtime.Object. Daher kann &deployment einer Variablen vom Typ runtime.Object zugewiesen werden, die den Rückgabetyp der Generate-Funktion erfüllt.
Das obige ist der detaillierte Inhalt vonWie erfüllt ein Bereitstellungszeiger die runtime.Object-Schnittstelle in Kubernetes?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!