Cómo el puntero &deployment satisface el tiempo de ejecución. Interfaz de objeto
En el código de Kubernetes, la función Generar en kubectl/run.go devuelve una lista de resultados que contiene runtime.Object y un error. La última línea de la función, return &deployment, nil, asigna la dirección de la variable local implementación al tiempo de ejecución. Tipo de objeto.
deployment es una variable local de tipo extensionsv1beta1.Deployment. Este tipo incorpora metav1.TypeMeta, que tiene un método GetObjectKind() con un receptor de puntero. Por lo tanto, un puntero a Deployment también tiene este método debido a las reglas de promoción de Go para métodos integrados.
Además, Deployment tiene un método DeepCopyObject() "directo" con un receptor de puntero, por lo que el conjunto de métodos de *Deployment contiene tanto GetObjectKind() como DeepCopyObject().
La interfaz runtime.Object requiere tipos para implementar estos dos métodos. Dado que *Deployment implementa ambos métodos, es un tipo válido para asignar a runtime.Object.
El sistema de tipos permite esta asignación porque los tipos de interfaz especifican un conjunto de métodos. Una variable de tipo de interfaz puede almacenar un valor de cualquier tipo con un conjunto de métodos que sea un superconjunto del conjunto de métodos de la interfaz. En este caso, el conjunto de métodos de *Deployment es un superconjunto del conjunto de métodos de runtime.Object, por lo que *Deployment implementa runtime.Object.
Por lo tanto, &deployment es un valor de retorno válido para la función Generar porque satisface la interfaz runtime.Object a través de la herencia de métodos del *metav1.TypeMeta.
incorporado.Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3