"If a worker wants to do his job well, he must first sharpen his tools." - Confucius, "The Analects of Confucius. Lu Linggong"
Front page > Programming > How Does the `&deployment` Pointer Fulfill the `runtime.Object` Interface in Kubernetes?

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

Published on 2024-11-08
Browse:754

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

How the &deployment Pointer Satisfies the runtime.Object Interface

In Kubernetes code, the Generate function in kubectl/run.go returns a result list containing runtime.Object and an error. The last line of the function, return &deployment, nil, assigns the address of the local variable deployment to the runtime.Object type.

deployment is a local variable of type extensionsv1beta1.Deployment. This type embeds metav1.TypeMeta, which has a GetObjectKind() method with a pointer receiver. Therefore, a pointer to Deployment also has this method due to Go's promotion rules for embedded methods.

Additionally, Deployment has a "direct" DeepCopyObject() method with a pointer receiver, so the method set of *Deployment contains both GetObjectKind() and DeepCopyObject().

The runtime.Object interface requires types to implement these two methods. Since *Deployment implements both methods, it is a valid type to assign to runtime.Object.

The type system allows this assignment because interface types specify a method set. A variable of interface type can store a value of any type with a method set that is a superset of the interface's method set. In this case, the method set of *Deployment is a superset of the method set of runtime.Object, so *Deployment implements runtime.Object.

Therefore, &deployment is a valid return value for the Generate function because it satisfies the runtime.Object interface through method inheritance from the embedded *metav1.TypeMeta.

Latest tutorial More>

Disclaimer: All resources provided are partly from the Internet. If there is any infringement of your copyright or other rights and interests, please explain the detailed reasons and provide proof of copyright or rights and interests and then send it to the email: [email protected] We will handle it for you as soon as possible.

Copyright© 2022 湘ICP备2022001581号-3