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

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

DDD
リリース: 2024-12-31 01:31:09
オリジナル
176 人が閲覧しました

How to Resolve

インタプリタ実装のための Go 構造体での「無効な再帰型」の解決

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

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