«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как указатель `&deployment` выполняет интерфейс `runtime.Object` в Kubernetes?

Как указатель `&deployment` выполняет интерфейс `runtime.Object` в Kubernetes?

Опубликовано 8 ноября 2024 г.
Просматривать:787

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

Как указатель &deployment соответствует среде выполнения. Интерфейс объекта

В коде Kubernetes функция Generate в kubectl/run.go возвращает результат список результатов, содержащий runtime.Object и ошибку. Последняя строка функции, return &deployment, nil, присваивает адрес локальной переменной Deployment типу runtime.Object.

deployment — это локальная переменная типа Extensionsv1beta1.Deployment. В этот тип встроен метав1.TypeMeta, который имеет метод GetObjectKind() с приемником указателя. Следовательно, указатель на Deployment также имеет этот метод из-за правил продвижения Go для встроенных методов.

Кроме того, Deployment имеет «прямой» метод DeepCopyObject() с приемником указателя, поэтому набор методов *Deployment содержит как GetObjectKind(), так и DeepCopyObject().

Интерфейсу runtime.Object требуются типы для реализации этих двух методов. Поскольку *Deployment реализует оба метода, это допустимый тип для присвоения среде выполнения.Object.

Система типов допускает такое назначение, поскольку типы интерфейса определяют набор методов. Переменная типа интерфейса может хранить значение любого типа с набором методов, который является расширенным набором методов интерфейса. В этом случае набор методов *Deployment является надмножеством набора методов runtime.Object, поэтому *Deployment реализует runtime.Object.

Поэтому &deployment является допустимым возвращаемым значением для функции Generate. потому что он удовлетворяет интерфейсу runtime.Object посредством наследования метода от встроенного *metav1.TypeMeta.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3