ホームページ > バックエンド開発 > Golang > Go 構造体で再帰型を使用するときに発生する「無効な再帰型」エラーを解決する方法は?

Go 構造体で再帰型を使用するときに発生する「無効な再帰型」エラーを解決する方法は?

Linda Hamilton
リリース: 2024-12-01 11:25:13
オリジナル
757 人が閲覧しました

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{&fun_Val.ds, fun_Val.param, exp.arg_exp.interp(env)}
ログイン後にコピー

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

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