Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menyelesaikan Ralat 'Jenis Rekursif Tidak Sah dalam Struct in Go'?
Memahami Ralat "Jenis Rekursif Tidak Sah dalam Struct dalam Go"
Dalam Go, jenis rekursif tidak dibenarkan dalam struct. Ralat ini timbul apabila cuba mentakrifkan struct yang mengandungi medan jenisnya sendiri.
Pertimbangkan takrifan awal struct Persekitaran:
type Environment struct { parent Environment symbol string value RCFAEValue }
Di sini, medan induk mempunyai yang sama taip sebagai struct melampirkan, Persekitaran. Takrifan rekursif ini membawa kepada ralat "Persekitaran jenis rekursif tidak sah".
Penyelesaian: Menggunakan Penunjuk untuk Jenis Rekursif
Untuk menyelesaikan ralat ini, tukar medan induk kepada penunjuk kepada struct Persekitaran:
type Environment struct { parent *Environment // pointer to the Environment struct symbol string value RCFAEValue }
Penunjuk ialah nilai yang menyimpan alamat memori yang lain nilai. Dengan menggunakan penuding untuk medan induk, kami mengalih keluar kebergantungan rekursif dan membenarkan pengkompil menentukan saiz struktur Persekitaran.
Mencipta Persekitaran
Untuk mencipta Persekitaran, gunakan & operator untuk mendapatkan alamat pembolehubah Persekitaran yang lain:
env := Environment{ &fun_Val.ds, // using the address of fun_Val.ds fun_Val.param, exp.arg_exp.interp(existingEnv)}
Ini memastikan medan induk merujuk kepada struct Persekitaran yang sah, mengelakkan ralat sebelumnya yang disebabkan oleh penggunaan func_Val.ds secara langsung sebagai jenis *Persekitaran.
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat 'Jenis Rekursif Tidak Sah dalam Struct in Go'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!