「Go の構造体の再帰型が無効です」エラーについて
Go では、構造体内で再帰型は許可されません。このエラーは、独自の型のフィールドを含む構造体を定義しようとすると発生します。
環境構造体の初期定義を検討してください:
type Environment struct { parent Environment symbol string value RCFAEValue }
ここでは、親フィールドも同じです。囲む構造体としてタイプ、Environment。この再帰的な定義により、「無効な再帰型環境」エラーが発生します。
解決策: 再帰型にポインターを使用する
このエラーを解決するには、親フィールドを環境構造体へのポインタ:
type Environment struct { parent *Environment // pointer to the Environment struct symbol string value RCFAEValue }
ポインタは、他の構造体のメモリ アドレスを格納する値です。価値観。親フィールドのポインターを使用することで、再帰的な依存関係が削除され、コンパイラーが環境構造体のサイズを決定できるようになります。
環境の作成
作成するには環境の場合、& 演算子を使用して別の環境変数のアドレスを取得します:
env := Environment{ &fun_Val.ds, // using the address of fun_Val.ds fun_Val.param, exp.arg_exp.interp(existingEnv)}
これにより、親フィールドが参照することが保証されます。 func_Val.ds を *Environment.
型として直接使用することによって発生した以前のエラーを回避し、有効な環境構造体に追加します。以上が「Go の構造体の再帰型が無効です」エラーを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。