Medan Fungsian lwn. Kaedah Struktur
Dalam Go, terdapat dua cara untuk mengaitkan fungsi dengan struct: sebagai medan atau sebagai suatu kaedah. Walaupun kedua-dua pendekatan mempunyai tujuan yang berbeza, memahami perbezaan adalah penting untuk pengekodan yang berkesan.
Bidang Jenis Fungsi
Medan jenis fungsi merujuk kepada pembolehubah dalam struktur yang boleh memegang fungsi sebagai nilainya. Ia menyediakan cara yang mudah untuk menyimpan rutin boleh dipanggil untuk pelaksanaan kemudian. Tidak seperti kaedah, medan fungsi ini bukan sebahagian daripada set kaedah struct.
Kaedah
Kaedah ialah fungsi yang dilampirkan secara eksplisit pada jenis struct tertentu . Apabila diisytiharkan dengan struct sebagai penerima, mereka menjadi sebahagian daripada set kaedah struct, memberikan akses kepada keadaan dalaman struct. Melaksanakan antara muka memerlukan penentuan kaedah yang benar.
Bila Menggunakan Mana
Contoh
Pertimbangkan coretan berikut:
<code class="go">type Foo struct { Bar func() } func main() { f := Foo{ Bar: func() { fmt.Println("initial") }, } f.Bar() f.Bar = func() { fmt.Println("changed") } f.Bar() }</code>
Di sini, f.Bar ialah medan jenis fungsi. Ia boleh ditetapkan semula pada masa jalan, seperti yang dilihat apabila nilai fungsi kedua ditetapkan dan dipanggil.
Berbeza dengan kaedah sebenar, Bar tidak mempunyai akses kepada mana-mana keadaan dalaman Foo. Ia beroperasi secara bebas daripada struct itu sendiri.
Atas ialah kandungan terperinci Bila hendak menggunakan Medan Fungsi vs. Kaedah Struktur dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!