Jenis Rekursif dalam Struct dalam Go
Mencipta struktur data dengan jenis rekursif boleh membawa kepada ralat "jenis rekursif tidak sah" dalam Go. Ambil contoh mentakrifkan struct Persekitaran:
type Environment struct { parent Environment symbol string value RCFAEValue }
Kod ini mengakibatkan ralat kerana pengkompil tidak dapat menentukan saiz Persekitaran. Medan induk itu sendiri mengandungi Persekitaran, yang membawa kepada regresi tak terhingga.
Untuk menyelesaikan masalah ini, Persekitaran harus diubah suai untuk menggunakan penunjuk ke Persekitaran lain dan bukannya membenamkannya secara langsung:
type Environment struct { parent *Environment // note that this is now a pointer symbol string value RCFAEValue }
Saiz penuding diketahui, tidak seperti struktur rujukan sendiri.
Apabila mencipta Persekitaran, sintaks baharu mencerminkan penuding tukar:
Environment{&fun_Val.ds, fun_Val.param, exp.arg_exp.interp(env)}
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat 'jenis rekursif tidak sah' Apabila Menggunakan Jenis Rekursif dalam Go Structs?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!