Rumah > Artikel > pembangunan bahagian belakang > Bagaimanakah pembolehubah `*extensionsv1beta1.Deployment` memenuhi kekangan jenis `runtime.Object` dalam Kubernetes?
Cara &deployment Memuaskan Taipkan masa jalan.Objek dalam Kod Kubernetes
Dalam fail kubectl/run.go kod Kubernetes, fungsi Generate menjana senarai nilai jenis runtime.Object. Baris akhir fungsi memberikan nilai jenis *extensionsv1beta1.Deployment kepada pembolehubah hasil pertama, iaitu jenis anotasi sebagai runtime.Object. Bagaimanakah tugasan ini memenuhi kekangan jenis?
Meta Terbenam dan Kaedah Digalakkan
Pembolehubah penempatan ialah pembolehubah tempatan bagi jenis sambunganv1beta1.Penyerahan. extensionsv1beta1.Deployment membenamkan metav1.TypeMeta, yang termasuk kaedah GetObjectKind(). Oleh kerana extensionsv1beta1.Deployment membenamkan jenis ini, kedua-dua extensionsv1beta1.Deployment dan *extensionsv1beta1.Deployment (penunjuk kepada extensionsv1beta1.Deployment) telah mempromosikan versi kaedah ini. Begitu juga, extensionsv1beta1.Deployment juga mempunyai kaedah DeepCopyObject().
Set Kaedah dan Pelaksanaan Antara Muka
runtime.Object ialah jenis antara muka yang menentukan set kaedah, termasuk GetObjectKind() dan DeepCopyObject(). Jenis antara muka boleh menyimpan nilai apa-apa jenis dengan set kaedah yang merupakan superset set kaedah antara muka. Jenis itu dikatakan melaksanakan antara muka.
Kaedah Penerima Penunjuk
Versi GetObjectKind() dan DeepCopyObject() yang dipromosikan mempunyai penerima penuding. Ini bermakna kedua-dua *extensionsv1beta1.Deployment dan &deployment (penunjuk kepada pemboleh ubah kerahan) mempunyai kaedah yang diperlukan dalam set kaedah mereka.
Type Assignability
Oleh kerana &deployment melaksanakan semua kaedah runtime.Object yang diperlukan, ia boleh diberikan kepada pembolehubah jenis runtime.Object. Ini selaras dengan peraturan sistem jenis Go bahawa pembolehubah jenis antara muka boleh menyimpan nilai apa-apa jenis yang melaksanakan antara muka.
Oleh itu, &pengerahan memenuhi keperluan jenis masa jalan.Objek kerana:
Atas ialah kandungan terperinci Bagaimanakah pembolehubah `*extensionsv1beta1.Deployment` memenuhi kekangan jenis `runtime.Object` dalam Kubernetes?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!