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.
Zusätzlich 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ülltDas obige ist der detaillierte Inhalt vonWie erfüllt der „&deployment'-Zeiger die „runtime.Object'-Schnittstelle in Kubernetes?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!