Dalam Go, jenis struct boleh mengandungi medan terbenam, yang membenarkan untuk membenamkan satu atau lebih jenis dalam struct. Ciri berkuasa ini membolehkan penggunaan semula kod dan pengurusan memori yang cekap. Walau bagaimanapun, memahami cara untuk mengakses medan ini boleh menjadi mencabar semasa mempelajari tentang penunjuk.
Pertimbangkan takrifan struktur berikut:
<code class="go">type Engine struct { power int } type Tires struct { number int } type Cars struct { *Engine // Embedded field with pointer Tires // Embedded field without pointer }</code>
Seperti yang anda perhatikan, dalam struktur Kereta, satu tertanam penunjuk jenis *Enjin ditakrifkan. Ini membenarkan akses kepada kaedah dan medan jenis Enjin melalui struktur Kereta.
Untuk mengakses medan kuasa medan terbenam Enjin, anda mesti memulakan kedua-dua struktur Enjin dan Kereta terlebih dahulu. Dalam fungsi utama:
<code class="go">func main() { car := new(Cars) // Initialize Cars struct car.Engine = new(Engine) // Initialize Engine struct explicitly car.power = 342 // Set power field car.number = 4 // Set number field }</code>
Dengan memulakan secara eksplisit kedua-dua struktur, anda mewujudkan sambungan antara *Penunjuk Enjin terbenam dan objek Enjin sebenar. Kini, anda boleh mengakses medan kuasa melalui struct Kereta:
<code class="go">fmt.Println(car.power) // Prints 342</code>
Begitu juga, untuk medan tertanam bukan penuding Tayar, anda boleh terus mengakses medan nombornya:
<code class="go">fmt.Println(car.number) // Prints 4</code>
Contoh ini menunjukkan cara untuk memulakan dan mengakses medan terbenam dengan betul dalam struktur, membolehkan anda menggunakan sepenuhnya penggunaan semula kod dan pengurusan memori yang cekap.
Atas ialah kandungan terperinci Bagaimanakah Saya Mengakses Medan Terbenam dalam Go Structs?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!