Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah cara saya mengatasi kaedah struct terbenam dalam Go?
Mengatasi Kaedah Struktur Terbenam dalam Go
Apabila membenamkan struct dalam Go, kaedah struct terbenam tersedia sebagai ahli peringkat atasan struktur benam. Ini membolehkan akses mudah kepada fungsi struct terbenam. Walau bagaimanapun, jika struct benam melaksanakan kaedahnya sendiri dengan nama yang sama, kaedah struct terbenam akan disembunyikan.
Pertimbangkan contoh berikut:
<code class="go">package main import "fmt" type Base struct { val int } func (b *Base)Set(i int) { b.val = i } type Sub struct { Base changed bool } func (b *Sub)Set(i int) { b.val = i b.changed = true } func main() { s := &Sub{} s.Base.Set(1) var b *Base = &s.Base fmt.Printf("%+v\n", b) fmt.Printf("%+v\n", s) }</code>
Dalam contoh ini, Sub struct membenamkan struct Base. Struktur Asas mempunyai kaedah Set, yang disembunyikan oleh kaedah Set Sub struct sendiri. Apabila s.Base.Set(1) dipanggil, kaedah Set struct Base digunakan, bukan kaedah Set Sub struct.
Untuk mengatasi kaedah struct terbenam dalam struct benam, anda hanya boleh memanggil struct terbenam. kaedah struct dari dalam kaedah struct embedding. Sebagai contoh, kod berikut akan mengatasi kaedah Set struct Base dalam Sub struct:
<code class="go">func (b *Sub)Set(i int) { b.Base.Set(i) b.changed = true }</code>
Dengan perubahan ini, apabila s.Set(1) dipanggil, kaedah Set Sub struct akan digunakan, yang akan memanggil kaedah Set struct Base dan juga menetapkan medan yang diubah kepada benar. Ini membolehkan anda mengatasi kelakuan kaedah struct terbenam sambil masih mempunyai akses kepada kefungsian struct terbenam.
Atas ialah kandungan terperinci Bagaimanakah cara saya mengatasi kaedah struct terbenam dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!