Maison > Article > développement back-end > Comment une variable `*extensionsv1beta1.Deployment` satisfait-elle à la contrainte de type `runtime.Object` dans Kubernetes ?
Comment le &déploiement satisfait Tapez runtime.Object dans le code Kubernetes
Dans le fichier kubectl/run.go du code Kubernetes, la fonction Générer génère une liste de valeurs de type runtime.Object. La dernière ligne de la fonction attribue une valeur de type *extensionsv1beta1.Deployment à la première variable de résultat, dont le type est annoté comme runtime.Object. Comment cette affectation satisfait-elle à la contrainte de type ?
Méta intégrées et méthodes promues
La variable de déploiement est une variable locale de type extensionsv1beta1.Deployment. extensionsv1beta1.Deployment intègre metav1.TypeMeta, qui inclut une méthode GetObjectKind(). Étant donné que extensionsv1beta1.Deployment intègre ce type, extensionsv1beta1.Deployment et *extensionsv1beta1.Deployment (pointeurs vers extensionsv1beta1.Deployment) ont promu des versions de cette méthode. De même, extensionsv1beta1.Deployment possède également une méthode DeepCopyObject().
Ensembles de méthodes et implémentation d'interface
runtime.Object est un type d'interface qui spécifie un ensemble de méthodes, notamment GetObjectKind() et DeepCopyObject(). Un type d'interface peut stocker une valeur de n'importe quel type avec un ensemble de méthodes qui est un sur-ensemble de l'ensemble de méthodes de l'interface. On dit que ce type implémente l'interface.
Méthodes de récepteur de pointeur
Les versions promues de GetObjectKind() et DeepCopyObject() ont des récepteurs de pointeur. Cela signifie que *extensionsv1beta1.Deployment et &deployment (le pointeur vers la variable de déploiement) ont les méthodes requises dans leurs ensembles de méthodes.
Assignabilité des types
Parce que &deployment implémente toutes les méthodes requises de runtime.Object, il peut être affecté à une variable de type runtime.Object. Ceci est cohérent avec la règle système de type Go selon laquelle une variable de type d'interface peut stocker une valeur de n'importe quel type qui implémente l'interface.
Par conséquent, &le déploiement satisfait à l'exigence de type de runtime.Object car :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!