Kubernetes 코드의 Runtime.Object 유형을 배포가 충족하는 방법
Kubectl/run.go 파일의 Kubernetes 코드에서 생성 함수는 Runtime.Object 유형의 값 목록을 생성합니다. 함수의 마지막 줄에서는 *extensionsv1beta1.Deployment 유형의 값을 Runtime.Object 유형으로 주석이 달린 첫 번째 결과 변수에 할당합니다. 이 할당은 유형 제약 조건을 어떻게 충족합니까?
내장 메타 및 승격 메서드
배포 변수는 Extensionsv1beta1.Deployment 유형의 로컬 변수입니다. Extensionsv1beta1.Deployment에는 GetObjectKind() 메서드가 포함된 Metav1.TypeMeta가 포함되어 있습니다. Extensionsv1beta1.Deployment에는 이 유형이 포함되어 있으므로 Extensionsv1beta1.Deployment 및 *extensionsv1beta1.Deployment(확장 v1beta1.Deployment에 대한 포인터) 모두 이 메서드의 승격 버전을 갖습니다. 마찬가지로, Extensionsv1beta1.Deployment에도 DeepCopyObject() 메서드가 있습니다.
메서드 집합 및 인터페이스 구현
runtime.Object는 다음을 포함하여 메서드 집합을 지정하는 인터페이스 유형입니다. GetObjectKind() 및 DeepCopyObject(). 인터페이스 유형은 인터페이스 메소드 세트의 상위 세트인 메소드 세트를 사용하여 모든 유형의 값을 저장할 수 있습니다. 해당 유형은 인터페이스를 구현한다고 합니다.
포인터 수신기 메서드
승격된 GetObjectKind() 및 DeepCopyObject() 버전에는 포인터 수신기가 있습니다. 이는 *extensionsv1beta1.Deployment 및 &deployment(배포 변수에 대한 포인터) 모두 해당 메서드 세트에 필수 메서드가 있음을 의미합니다.
유형 할당 가능성
&deployment가 구현하기 때문입니다. 런타임.Object의 모든 필수 메소드를 런타임.Object 유형의 변수에 할당할 수 있습니다. 이는 인터페이스 유형 변수가 인터페이스를 구현하는 모든 유형의 값을 저장할 수 있다는 Go 유형 시스템 규칙과 일치합니다.
따라서 &deployment는 다음과 같은 이유로 Runtime.Object의 유형 요구 사항을 충족합니다.
위 내용은 `*extensionsv1beta1.Deployment` 변수는 Kubernetes의 `runtime.Object` 유형 제약 조건을 어떻게 충족하나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!