Go の構造体の再帰型
再帰型を使用してデータ構造を作成すると、Go で「無効な再帰型」エラーが発生する可能性があります。環境構造体を定義する場合を考えてみましょう:
type Environment struct { parent Environment symbol string value RCFAEValue }
コンパイラが環境のサイズを決定できないため、このコードはエラーになります。親フィールド自体に環境が含まれており、無限回帰につながります。
これを解決するには、環境を直接埋め込むのではなく、別の環境へのポインターを使用するように環境を変更する必要があります。
type Environment struct { parent *Environment // note that this is now a pointer symbol string value RCFAEValue }
自己参照構造とは異なり、ポインタのサイズは既知です。
環境を作成するとき、新しい構文はポインタを反映します。変更:
Environment{&fun_Val.ds, fun_Val.param, exp.arg_exp.interp(env)}
以上がGo 構造体で再帰型を使用するときに発生する「無効な再帰型」エラーを解決する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。