&deployment 포인터가 런타임 객체 인터페이스를 충족하는 방법
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 인터페이스를 충족하기 때문입니다.
위 내용은 '&deployment' 포인터는 Kubernetes의 'runtime.Object' 인터페이스를 어떻게 이행합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!