Rumah  >  Artikel  >  pembangunan bahagian belakang  >  ## Mengapa Saya Boleh Menghubungi Kaedah Penerima Penunjuk pada Nilai dalam Go?

## Mengapa Saya Boleh Menghubungi Kaedah Penerima Penunjuk pada Nilai dalam Go?

Patricia Arquette
Patricia Arquetteasal
2024-10-25 18:39:17566semak imbas

## Why Can I Call a Pointer Receiver Method on a Value in Go?

Kaedah Go Receiver Memanggil Kekeliruan Sintaks

Bahasa pengaturcaraan Go menyediakan dua jenis kaedah penerima: penerima nilai dan penerima penunjuk. Penerima nilai beroperasi secara langsung pada nilai jenis, manakala penerima penunjuk beroperasi pada penunjuk kepada nilai jenis.

Dokumentasi untuk Go menyatakan bahawa kaedah nilai boleh digunakan pada kedua-dua penunjuk dan nilai, tetapi penunjuk kaedah hanya boleh digunakan pada penunjuk. Ini kerana kaedah penuding boleh mengubah suai penerima, dan menggunakannya pada salinan nilai akan membuang pengubahsuaian tersebut.

Walau bagaimanapun, contoh kod yang disediakan berjaya memanggil kaedah penunjuk pada nilai. Untuk memahami mengapa ini sah, kita perlu merujuk kepada spesifikasi bahasa:

A method call x.m() is valid if the method set of (the type of) x
contains m and the argument list can be assigned to the parameter list
of m. If x is addressable and &x's method set contains m, x.m() is
shorthand for (&x).m().

Ini bermakna jika pembolehubah boleh dialamatkan (iaitu, ia boleh diluluskan melalui rujukan), kita boleh menggunakan kaedah penunjuk pada ia seolah-olah ia adalah penunjuk. Dalam contoh kod, pembolehubah vAge diisytiharkan sebagai nilai, tetapi ia boleh ditangani kerana ia adalah pembolehubah jenis bernama. Oleh itu, panggilan vAge.Set(10) adalah bersamaan dengan (&vAge).Set(10), yang sah kerana &vAge ialah penunjuk kepada vAge.

Atas ialah kandungan terperinci ## Mengapa Saya Boleh Menghubungi Kaedah Penerima Penunjuk pada Nilai dalam 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