Nilai kaedah fungsi Golang dan kaedah pelaksanaan ungkapan kaedah

WBOY
Lepaskan: 2023-05-16 20:40:53
asal
715 orang telah melayarinya

Nilai kaedah dan kaedah pelaksanaan ungkapan kaedah bagi fungsi Golang

Di Golang, fungsi adalah warga kelas pertama. Ini bermakna fungsi secara sintaksis sama seperti nilai lain dan boleh disimpan dalam pembolehubah, dihantar ke fungsi, dan dikembalikan daripada fungsi. Di samping itu, Golang juga menyediakan kaedah untuk memanjangkan tingkah laku jenis. Kaedah ialah fungsi khas yang wujud pada jenis dan boleh mengakses medan dan kaedah jenis tersebut. Dalam artikel ini, kita akan membincangkan nilai kaedah dan kaedah pelaksanaan ungkapan kaedah bagi fungsi Golang.

Nilai kaedah dan ungkapan kaedah

Mula-mula, mari kita lihat nilai kaedah dan ungkapan kaedah. Nilai kaedah ialah nilai fungsi yang terikat kepada penerima. Ia serupa dengan fungsi biasa, tetapi ia juga mengandungi penerima, yang ditentukan apabila fungsi itu ditakrifkan. Oleh itu, nilai kaedah boleh dihantar dan disimpan seperti fungsi biasa, tetapi ia juga mengekalkan rujukan kepada penerima.

Berikut ialah contoh:

type Rect struct { width, height float64 } func (r Rect) Area() float64 { return r.width * r.height } func main() { r := Rect{3, 4} // 获取 Rect 类型的 Area 方法值 f := r.Area // 调用方法值 fmt.Println(f()) }
Salin selepas log masuk

Dalam contoh di atas, kami mentakrifkan jenis bernamaRectdan kaedah bernamaAreauntuknya . Penerima kaedahAreaini adalah daripada jenisRect, jadi ia hanya boleh dipanggil pada kejadianRect. Dalam fungsimain, kami mencipta contohRectrdan mendapatkan nilai kaedahAreanya, menyimpannya dalam pembolehubah bernamaf. Memandangkanfialah nilai fungsi, kita boleh memanggilnya seperti fungsi biasa, tetapi ia juga mengekalkan rujukan kepada contohr, jadi ia dihantar secara automatik dalamrapabila dipanggil.

Serupa dengan nilai kaedah, ungkapan kaedah ialah ungkapan fungsi yang terikat kepada penerima. Ia serupa dengan nilai kaedah, tetapi ia tidak bergantung pada mana-mana contoh dan boleh dipanggil apabila tiada contoh. Ungkapan kaedah menggunakan nama jenis sebagai penerima.

Berikut ialah contoh penggunaan ungkapan kaedah:

type Rect struct { width, height float64 } func (r Rect) Area() float64 { return r.width * r.height } func main() { // 获取 Rect 类型的 Area 方法表达式 f := Rect.Area fmt.Println(f(Rect{3, 4})) }
Salin selepas log masuk

Dalam contoh di atas, kami menggunakanRect.Areauntuk mendapatkanRectungkapan kaedah jenisArea. Memandangkan ungkapan kaedah tidak bergantung pada mana-mana kejadian, kami boleh terus menghantar tikaRectdan ia akan digunakan secara automatik sebagai penerima apabila dipanggil.

Cara melaksanakan kaedah

Di Golang, terdapat dua cara untuk melaksanakan kaedah: penerima nilai dan penerima penunjuk. Penerima nilai menghantar nilai sebagai penerima kepada kaedah, dan penerima penunjuk menghantar penunjuk sebagai penerima kepada kaedah. Penerima nilai akan menyalin nilai medan dalam kaedah, manakala penerima penunjuk akan melepasi penunjuk sebagai penerima supaya nilai medan boleh diubah suai secara langsung dalam kaedah.

Berikut ialah contoh penggunaan penerima nilai:

type Rect struct { width, height float64 } func (r Rect) Scale(factor float64) { r.width *= factor r.height *= factor } func main() { r := Rect{3, 4} r.Scale(2) fmt.Println(r.width, r.height) }
Salin selepas log masuk

Dalam contoh di atas, kami telah mentakrifkan kaedah penerima nilai bernamaScale. Ia mengambil apunganfactordan mendarabkan lebar dan tinggiRectdengannya. Apabila kaedah dipanggil, terima kasih kepada penggunaan penerima nilai, nilai contohrdisalin ke dalam kaedah dan diubah suai. Jadi walaupun lebar dan ketinggian diubah suai dalam kaedah, kami masih mempunyai akses kepada nilai asal di luar fungsi.

Berikut ialah contoh menggunakan penerima penunjuk:

type Rect struct { width, height float64 } func (r *Rect) Scale(factor float64) { r.width *= factor r.height *= factor } func main() { r := &Rect{3, 4} r.Scale(2) fmt.Println(r.width, r.height) }
Salin selepas log masuk

Dalam contoh di atas, kami telah mentakrifkan kaedah penerima penunjuk bernamaScale. Ia memerlukan apunganfactordan mendarabkan lebar dan tinggiRectdengannya. Apabila memanggil kaedah, terima kasih kepada penggunaan penerima penunjuk, penunjuk kepada contohrdihantar ke kaedah dan medannya boleh diubah suai secara langsung. Oleh itu, nilai yang diubah suai juga boleh diakses di luar fungsi.

Kesimpulan

Nilai kaedah dan ungkapan kaedah fungsi Golang sangat berguna, dan ia boleh meningkatkan kebolehbacaan dan kebolehgunaan semula kod. Selain itu, apabila melaksanakan kaedah, kita perlu memilih antara menggunakan penerima nilai atau penerima penunjuk, bergantung pada spesifik kod. Di atas adalah pengenalan kepada nilai kaedah dan kaedah pelaksanaan ungkapan kaedah fungsi Golang saya harap ia akan membantu kerja pembangunan anda.

Atas ialah kandungan terperinci Nilai kaedah fungsi Golang dan kaedah pelaksanaan ungkapan kaedah. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!