Wie &deployment Typ runtime.Object im Kubernetes-Code erfüllt
In der kubectl/run.go-Datei des Kubernetes-Codes die Generate-Funktion generiert eine Liste von Werten vom Typ runtime.Object. Die letzte Zeile der Funktion weist der ersten Ergebnisvariablen einen Wert vom Typ *extensionsv1beta1.Deployment zu, der als Typ runtime.Object annotiert ist. Wie erfüllt diese Zuweisung die Typbeschränkung?
Embedded Meta and Promoted Methods
Die Bereitstellungsvariable ist eine lokale Variable vom Typ extensionsv1beta1.Deployment. extensionsv1beta1.Deployment bettet metav1.TypeMeta ein, das eine GetObjectKind()-Methode enthält. Da extensionsv1beta1.Deployment diesen Typ einbettet, haben sowohl extensionsv1beta1.Deployment als auch *extensionsv1beta1.Deployment (Zeiger auf extensionsv1beta1.Deployment) Versionen dieser Methode heraufgestuft. Ebenso verfügt extensionsv1beta1.Deployment auch über eine DeepCopyObject()-Methode.
Methodensätze und Schnittstellenimplementierung
runtime.Object ist ein Schnittstellentyp, der einen Methodensatz angibt, einschließlich GetObjectKind() und DeepCopyObject(). Ein Schnittstellentyp kann einen Wert eines beliebigen Typs mit einem Methodensatz speichern, der eine Obermenge des Methodensatzes der Schnittstelle darstellt. Dieser Typ soll die Schnittstelle implementieren.
Zeigerempfängermethoden
Die geförderten Versionen von GetObjectKind() und DeepCopyObject() verfügen über Zeigerempfänger. Dies bedeutet, dass sowohl *extensionsv1beta1.Deployment als auch &deployment (der Zeiger auf die Bereitstellungsvariable) die erforderlichen Methoden in ihren Methodensätzen haben.
Typzuweisbarkeit
Weil &deployment implementiert Da alle erforderlichen Methoden von runtime.Object vorhanden sind, kann es einer Variablen vom Typ runtime.Object zugewiesen werden. Dies steht im Einklang mit der Go-Typsystemregel, dass eine Schnittstellentypvariable einen Wert eines beliebigen Typs speichern kann, der die Schnittstelle implementiert.
Daher erfüllt &deployment die Typanforderung von runtime.Object, weil:
Das obige ist der detaillierte Inhalt vonWie erfüllt eine Variable „*extensionsv1beta1.Deployment' die Typbeschränkung „runtime.Object' in Kubernetes?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!