"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > '&deployment' 포인터는 Kubernetes의 'runtime.Object' 인터페이스를 어떻게 이행합니까?

'&deployment' 포인터는 Kubernetes의 'runtime.Object' 인터페이스를 어떻게 이행합니까?

2024-11-08에 게시됨
검색:738

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

&배포 포인터가 런타임을 충족하는 방법.객체 인터페이스

Kubernetes 코드에서 kubectl/run.go의 생성 함수는 다음을 반환합니다. Runtime.Object 및 오류가 포함된 결과 목록입니다. 함수의 마지막 줄인 return &deployment, nil은 지역 변수 배포 주소를 Runtime.Object 유형에 할당합니다.

deployment는 Extensionsv1beta1.Deployment 유형의 지역 변수입니다. 이 유형에는 포인터 수신기가 있는 GetObjectKind() 메서드가 있는 Metav1.TypeMeta가 포함되어 있습니다. 따라서 배포에 대한 포인터에도 내장 메서드에 대한 Go의 승격 규칙으로 인해 이 메서드가 있습니다.

또한 배포에는 포인터 수신기가 있는 "직접" DeepCopyObject() 메서드가 있으므로 *Deployment의 메서드 세트에는 다음이 포함됩니다. GetObjectKind() 및 DeepCopyObject() 모두.

runtime.Object 인터페이스에는 이러한 두 메서드를 구현하는 유형이 필요합니다. *Deployment는 두 메서드를 모두 구현하므로, Runtime.Object에 할당하는 것이 유효한 유형입니다.

인터페이스 유형이 메서드 세트를 지정하기 때문에 유형 시스템에서 이 할당을 허용합니다. 인터페이스 유형의 변수는 인터페이스 메소드 세트의 상위 세트인 메소드 세트를 사용하여 모든 유형의 값을 저장할 수 있습니다. 이 경우 *Deployment의 메소드 세트는 Runtime.Object의 메소드 세트의 상위 세트이므로 *Deployment는 Runtime.Object를 구현합니다.

따라서 &deployment는 생성 함수에 대한 유효한 반환 값입니다. 내장된 *metav1.TypeMeta.

로부터 메서드 상속을 통해 런타임.Object 인터페이스를 충족하기 때문입니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3