„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie erfüllt der „&deployment“-Zeiger die „runtime.Object“-Schnittstelle in Kubernetes?

Wie erfüllt der „&deployment“-Zeiger die „runtime.Object“-Schnittstelle in Kubernetes?

Veröffentlicht am 08.11.2024
Durchsuche:566

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

Wie der &deployment-Zeiger die runtime.Object-Schnittstelle erfüllt

Im Kubernetes-Code gibt die Generate-Funktion in kubectl/run.go zurück eine Ergebnisliste mit runtime.Object und einem Fehler. Die letzte Zeile der Funktion, return &deployment, nil, weist die Adresse der lokalen Variablenbereitstellung dem Typ runtime.Object zu.

deployment ist eine lokale Variable vom Typ extensionsv1beta1.Deployment. Dieser Typ bettet metav1.TypeMeta ein, das über eine GetObjectKind()-Methode mit einem Zeigerempfänger verfügt. Daher verfügt ein Zeiger auf Deployment aufgrund der Heraufstufungsregeln von Go für eingebettete Methoden auch über diese Methode.

Darüber hinaus verfügt Deployment über eine „direkte“ DeepCopyObject()-Methode mit einem Zeigerempfänger, sodass der Methodensatz von *Deployment Folgendes enthält sowohl GetObjectKind() als auch DeepCopyObject().

Die runtime.Object-Schnittstelle erfordert Typen, um diese beiden Methoden zu implementieren. Da *Deployment beide Methoden implementiert, ist es ein gültiger Typ, der runtime.Object zugewiesen werden kann.

Das Typsystem lässt diese Zuweisung zu, da Schnittstellentypen einen Methodensatz angeben. Eine Variable vom Schnittstellentyp kann einen Wert eines beliebigen Typs mit einem Methodensatz speichern, der eine Obermenge des Methodensatzes der Schnittstelle darstellt. In diesem Fall ist der Methodensatz von *Deployment eine Obermenge des Methodensatzes von runtime.Object, sodass *Deployment runtime.Object implementiert.

Daher ist &deployment ein gültiger Rückgabewert für die Generate-Funktion weil es die runtime.Object-Schnittstelle durch Methodenvererbung vom eingebetteten *metav1.TypeMeta erfüllt.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3