Rumah >pembangunan bahagian belakang >Golang >Berfungsi sebagai Medan Struct vs. Kaedah Struct: Bila hendak menggunakan Which in Go?

Berfungsi sebagai Medan Struct vs. Kaedah Struct: Bila hendak menggunakan Which in Go?

DDD
DDDasal
2024-10-30 02:05:28307semak imbas

 Functions as Struct Fields vs. Struct Methods: When to Use Which in Go?

Fungsi sebagai Medan Struktur vs. Kaedah Struktur

Dalam Go, fungsi boleh dibenamkan sebagai medan dalam struct atau ditakrifkan sebagai kaedah bagi struct tersebut . Memahami perbezaan antara pendekatan ini boleh mengoptimumkan reka bentuk kod anda.

Medan Jenis Fungsi

Medan jenis fungsi bukanlah kaedah benar yang dilampirkan pada jenis struct. Mereka menyimpan rujukan kepada fungsi dan bukannya menjadi sebahagian daripada set kaedah struct.

Kaedah Benar

Kaedah benar, diisytiharkan dengan jenis struct sebagai penerima, adalah integral kepada set kaedah struct. Mereka membenarkan untuk melaksanakan antara muka dan beroperasi pada jenis konkrit. Setelah ditakrifkan, kaedah tidak boleh ditukar pada masa jalan.

Bila Menggunakan Medan Jenis Fungsi

  • Untuk panggilan balik, seperti pengendali acara atau pengendali permintaan rangkaian.
  • Untuk meniru kaedah maya dengan menetapkan fungsi pada medan dan menetapkannya semula pada masa jalan.

Bila Menggunakan Kaedah Benar

  • Apabila melaksanakan antara muka
  • Apabila bekerja dengan jenis konkrit dan memerlukan set kaedah yang konsisten
  • Apabila keselamatan menjadi kebimbangan, kerana kaedah tidak berubah dan akses medan berpotensi diganggu

Contoh

<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>

Output:

initial
changed

Dalam contoh ini, fungsi dibenamkan sebagai medan dalam struct Foo. Dengan menetapkan semula medan pada masa jalanan, kami boleh menukar gelagat kaedah Bar, menunjukkan fleksibiliti medan jenis fungsi.

Atas ialah kandungan terperinci Berfungsi sebagai Medan Struct vs. Kaedah Struct: Bila hendak menggunakan Which in Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn