Rumah >pembangunan bahagian belakang >Golang >Apakah Penerima dalam Go dan Bagaimana Ia Berfungsi dengan Sintaks Kaedah?

Apakah Penerima dalam Go dan Bagaimana Ia Berfungsi dengan Sintaks Kaedah?

Linda Hamilton
Linda Hamiltonasal
2024-12-25 16:35:13150semak imbas

What are Receivers in Go and How Do They Work with Method Syntax?

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!

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