Rumah >pembangunan bahagian belakang >Golang >Apakah Penerima dalam Go dan Bagaimana Ia Berfungsi dengan Sintaks Kaedah?
Sintaks Kaedah dalam Go: Memahami "Perkara dalam Kurungan" Sebelum Nama Fungsi
Dalam Go, anda mungkin menghadapi pengisytiharan fungsi seperti berikut:
func (h handler) ServeHTTP(w http.ResponseWriter, r *http.Request) { ... } func (s *GracefulServer) BlockingClose() bool { ... }
Unsur dalam kurungan sebelum nama fungsi dikenali sebagai "penerima." Mereka menunjukkan bahawa fungsi itu ialah kaedah jenis tertentu.
Apakah itu Penerima?
Penerima adalah serupa dengan kelas dalam pengaturcaraan berorientasikan objek. Ia mewakili jenis kaedah yang boleh dipanggil.
Dalam contoh pertama, (h pengendali) bermaksud kaedah ServeHTTP ialah kaedah jenis pengendali. Begitu juga, (s *GracefulServer) menunjukkan bahawa BlockingClose ialah kaedah jenis *GracefulServer (penunjuk kepada GracefulServer).
Cara Penerima Berfungsi
Apabila kaedah itu dipanggil, penerima akan ditolak ke timbunan panggilan sebagai hujah. Jika penerima ialah jenis nilai (seperti dalam pengendali di atas), sebarang perubahan yang dibuat dalam kaedah tidak akan berterusan selepas kembali ke konteks panggilan.
Untuk mengubah suai keadaan penerima jenis nilai, anda boleh sama ada mengembalikan nilai yang diubah suai atau menggunakan penunjuk kepada penerima (seperti dalam *GracefulServer di atas).
Contoh
Pertimbangkan kod berikut:
// type Person represents a person type Person struct { Name string } // Greet returns a greeting for the person func (p Person) Greet() string { return "Hello, " + p.Name }
Dalam contoh ini, (p Orang) menunjukkan bahawa Greet ialah kaedah daripada jenis Orang. Apabila anda memanggil Greet on a Person instance, ia akan membalas salam berdasarkan nama orang tersebut.
Rujukan
Untuk maklumat lanjut tentang penerima dalam Go, rujuk kepada spesifikasi rasmi: https://golang.org/ref/spec#Method_sets
Atas ialah kandungan terperinci Apakah Penerima dalam Go dan Bagaimana Ia Berfungsi dengan Sintaks Kaedah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!