"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como o ponteiro `&deployment` atende à interface `runtime.Object` no Kubernetes?

Como o ponteiro `&deployment` atende à interface `runtime.Object` no Kubernetes?

Publicado em 2024-11-08
Navegar:891

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

Como o ponteiro de implantação satisfaz o tempo de execução. Interface de objeto

No código Kubernetes, a função Gerar em kubectl/run.go retorna uma lista de resultados contendo runtime.Object e um erro. A última linha da função, return &deployment, nil, atribui o endereço da variável local implantação ao tipo runtime.Object.

deployment é uma variável local do tipo extensionsv1beta1.Deployment. Este tipo incorpora metav1.TypeMeta, que possui um método GetObjectKind() com um receptor de ponteiro. Portanto, um ponteiro para Deployment também possui esse método devido às regras de promoção de Go para métodos incorporados.

Além disso, Deployment possui um método DeepCopyObject() "direto" com um receptor de ponteiro, portanto, o conjunto de métodos de *Deployment contém ambos GetObjectKind() e DeepCopyObject().

A interface runtime.Object requer tipos para implementar esses dois métodos. Como *Deployment implementa ambos os métodos, é um tipo válido para atribuir a runtime.Object.

O sistema de tipos permite essa atribuição porque os tipos de interface especificam um conjunto de métodos. Uma variável do tipo interface pode armazenar um valor de qualquer tipo com um conjunto de métodos que é um superconjunto do conjunto de métodos da interface. Nesse caso, o conjunto de métodos de *Deployment é um superconjunto do conjunto de métodos de runtime.Object, portanto *Deployment implementa runtime.Object.

Portanto, &deployment é um valor de retorno válido para a função Generate porque satisfaz a interface runtime.Object por meio da herança de método do *metav1.TypeMeta.

incorporado.
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3