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

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

Patricia Arquette
リリース: 2024-12-02 17:52:11
オリジナル
128 人が閲覧しました

How to Resolve the

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 構造体のサイズが確実に認識され、コンパイラーが処理を続行できるようになります。

環境の作成

構造体の定義を更新した後、次のように環境構造体を作成できます。

Environment{&fun_Val.ds, fun_Val.param, exp.arg_exp.interp(env)}
ログイン後にコピー

& 演算子を使用すると、次のように取得します。 fun_Val.ds 変数のアドレスを取得し、それを *Environment 型の親フィールドに割り当てます。

以上がGo 構造体の「無効な再帰型」エラーを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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