首頁 > 後端開發 > Golang > 如何解決在 Go 結構中使用遞歸類型時出現「無效遞歸類型」錯誤?

如何解決在 Go 結構中使用遞歸類型時出現「無效遞歸類型」錯誤?

Linda Hamilton
發布: 2024-12-01 11:25:13
原創
686 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板