Mengapakah Fungsi Tidak Boleh Digunakan sebagai Kekunci Peta dalam Go?

Linda Hamilton
Lepaskan: 2024-10-31 18:27:29
asal
555 orang telah melayarinya

Why Can't Functions Be Used as Map Keys in Go?

Kekunci Fungsi dalam Peta

Artikel ini meneroka had penggunaan fungsi sebagai kunci peta dalam bahasa pengaturcaraan Go.

Masalahnya

Pertimbangkan hipotetikal Go berikut kod:

type Action func(int)
func test(a int) { }
func test2(a int) { }

func main() {
  x := map[Action]bool{}
  x[test] = true
  x[test2] = false
}
Salin selepas log masuk

Jika anda cuba menyusun kod ini, anda akan menghadapi ralat yang menunjukkan bahawa "Tindakan jenis kunci peta tidak sah."

Jawapannya

Spesifikasi bahasa Go secara jelas melarang penggunaan fungsi, peta dan kepingan sebagai kunci peta. Khususnya, spesifikasi menyatakan:

"Operator perbandingan == dan != mesti ditakrifkan sepenuhnya untuk operan jenis kunci; oleh itu jenis kunci mestilah bukan fungsi, peta atau kepingan."

Sekatan ini dilaksanakan kerana pengendali perbandingan kesaksamaan (== dan !=) mesti ditakrifkan dengan baik untuk jenis kunci. Fungsi, peta dan kepingan bukan jenis kunci yang sesuai kerana perbandingan kesamaan mereka tidak ditakrifkan sepenuhnya.

Kesimpulan

Walaupun mungkin menarik untuk menggunakan fungsi sebagai kunci peta , ia tidak dibenarkan dalam Go kerana keperluan untuk perbandingan kesaksamaan yang jelas. Oleh itu, anda harus menggunakan jenis lain yang sesuai, seperti rentetan, integer atau struct, sebagai kunci peta.

Atas ialah kandungan terperinci Mengapakah Fungsi Tidak Boleh Digunakan sebagai Kekunci Peta dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
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!