Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Menyelesaikan Ralat 'jenis rekursif tidak sah' Apabila Menggunakan Jenis Rekursif dalam Go Structs?

Bagaimana untuk Menyelesaikan Ralat 'jenis rekursif tidak sah' Apabila Menggunakan Jenis Rekursif dalam Go Structs?

Linda Hamilton
Lepaskan: 2024-12-01 11:25:13
asal
694 orang telah melayarinya

How to Resolve the

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

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

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

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!

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