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
Linda Hamiltonasal
2024-12-01 11:25:13759semak imbas

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
}

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!

Kenyataan:
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