Kubernetes의 kubectl/run.go 코드에서 생성 함수는 다음을 포함하는 결과 목록을 반환합니다. 두 가지 유형: 런타임.객체 및 오류. 그러나 함수의 마지막 줄은 return &deployment, nil입니다. 이는 처음에 &deployment가 어떻게 Runtime.Object 유형을 충족할 수 있는지에 대한 의문을 제기합니다.
runtime.Object는 k8s.io/apimachinery/pkg/runtime 패키지에 정의된 인터페이스입니다. Kubernetes API의 추상 객체를 나타냅니다. 인터페이스를 구현하려면 유형에 다음 메서드가 있어야 합니다.
이 경우 배포는 Kubernetes API 유형인 Extensionsv1beta1.Deployment 유형의 로컬 변수입니다. Extensionsv1beta1.Deployment는 GetObjectKind() 메서드를 제공하는 Metav1.TypeMeta를 확장합니다. 또한 Extensionsv1beta1.Deployment는 DeepCopyObject() 메서드도 직접 구현합니다.
Go의 & 연산자는 변수에 대한 포인터를 생성합니다. 포인터는 기본 유형과 별개의 유형을 갖습니다. 그러나 이 경우에는
Go 사양에 따르면 인터페이스 유형은 인터페이스의 상위 집합인 메서드 집합을 사용하여 모든 유형의 값을 저장할 수 있습니다. 이 경우 *extensionsv1beta1.Deployment의 메소드 세트는 Runtime.Object의 메소드 세트의 상위 세트입니다. 따라서 &deployment를 Runtime.Object 유형의 변수에 할당하여 생성 함수의 반환 유형을 만족시킬 수 있습니다.
위 내용은 배포 포인터는 Kubernetes의 Runtime.Object 인터페이스를 어떻게 충족합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!