ホームページ > バックエンド開発 > Golang > 「Go の構造体の再帰型が無効です」エラーを解決するにはどうすればよいですか?

「Go の構造体の再帰型が無効です」エラーを解決するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-03 08:54:10
オリジナル
419 人が閲覧しました

How to Resolve the

「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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート