Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Menyelesaikan Ralat 'Jenis Rekursif Tidak Sah dalam Struct in Go'?

Bagaimana untuk Menyelesaikan Ralat 'Jenis Rekursif Tidak Sah dalam Struct in Go'?

Mary-Kate Olsen
Lepaskan: 2024-12-03 08:54:10
asal
450 orang telah melayarinya

How to Resolve the

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
}
Salin selepas log masuk

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
}
Salin selepas log masuk

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)}
Salin selepas log masuk

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!

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