Go で、再帰型の構造体 (たとえば、親フィールドが独自の型を参照している場合、「無効な再帰型」というエラーが発生する可能性があります。この問題を解決し、根本的な理由を理解する方法は次のとおりです。
Go では、独自の型を直接参照する構造体により、コンパイラーはサイズを決定できなくなります。構造体の。この問題を解決するには、構造体を直接インクルードするのではなく、構造体へのポインタを使用する必要があります。
次の修正されたバージョンの環境構造体では、親へのポインタが使用されます。フィールド:
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 サイトの他の関連記事を参照してください。