&배포 포인터가 런타임을 충족하는 방법.객체 인터페이스
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