Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menyelesaikan Ralat 'Jenis Rekursif Tidak Sah' dalam Definisi Go Struct?
Dalam Go, apabila cuba mentakrifkan struct dengan jenis rekursif, seperti struct Persekitaran dengan medan induk yang merujuk jenisnya sendiri, anda mungkin menghadapi ralat "jenis rekursif tidak sah." Begini cara untuk menyelesaikan isu ini dan memahami sebab asas:
Dalam Go, struct yang merujuk jenisnya sendiri secara langsung akan mengakibatkan pengkompil tidak dapat menentukan saiz daripada struct. Untuk menyelesaikan isu ini, kita perlu menggunakan penuding kepada struct dan bukannya terus memasukkan struct.
Versi struct Persekitaran yang diperbetulkan berikut menggunakan penunjuk kepada induknya medan:
type Environment struct { parent *Environment // note that this is now a pointer symbol string value RCFAEValue }
Dengan menggunakan penunjuk, kami membenarkan pengkompil menentukan saiz struct sejak saiz penunjuk dipratentukan.
Apabila mencipta Persekitaran baharu, kita perlu menghantar penunjuk kepada persekitaran induk dan bukannya persekitaran itu sendiri:
Environment{&fun_Val.ds, fun_Val.param, exp.arg_exp.interp(env)}
Ini memastikan bahawa kami menggunakan jenis yang betul dan bahawa struct itu sah.
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat 'Jenis Rekursif Tidak Sah' dalam Definisi Go Struct?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!