Rumah >pembangunan bahagian belakang >Golang >Apakah yang dilakukan oleh Penerima dalam Pengisytiharan Fungsi Go?

Apakah yang dilakukan oleh Penerima dalam Pengisytiharan Fungsi Go?

DDD
DDDasal
2024-12-20 10:55:21199semak imbas

What Does the Receiver in Go Function Declarations Do?

Apa yang Ada di Dalam Kurungan dalam Pengisytiharan Fungsi Go?

Dalam Go, anda mungkin menghadapi pengisytiharan fungsi dengan sintaks seperti ini:

func (h handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
    ...
}
func (s *GracefulServer) BlockingClose() bool {
    ...
}

Apa yang ada di dalam kurungan, seperti (pengendali h) dan (s *GracefulServer), dikenali sebagai "penerima". Cara ia berfungsi dalam Go berbeza daripada bahasa lain.

Penerima sebagai Kelas

Jenis penerima, seperti kelas dalam pengaturcaraan berorientasikan objek, mewakili entiti mengenai kaedah yang digunakan. Sebagai contoh, jika A ialah kaedah dalam Kelas Orang, contoh Orang diperlukan untuk memanggil A.

Penerima sebagai Nilai atau Penunjuk

Dalam contoh di atas, h ialah jenis nilai manakala s ialah penunjuk. Perbezaan ini mempengaruhi cara kaedah beroperasi:

  • Jenis Nilai (cth., pengendali): Pengubahsuaian kepada penerima dalam kaedah tidak menjejaskan tika asal.
  • Jenis Penunjuk (cth., *GracefulServer): Perubahan dibuat pada penerima kekal dalam contoh asal.

Bila Menggunakan Penunjuk

Gunakan penunjuk sebagai penerima apabila anda ingin mengubah suai keadaan penerima. Contohnya, jika anda memerlukan BlockingClose untuk mengubah keadaan GracefulServer, s *GracefulServer diperlukan.

Rujukan Spesifikasi:

Untuk butiran lanjut, rujuk kepada Go rasmi spesifikasi: https://golang.org/ref/spec#Method_sets

Atas ialah kandungan terperinci Apakah yang dilakukan oleh Penerima dalam Pengisytiharan Fungsi 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