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

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

Linda Hamilton
Linda Hamilton原創
2024-12-01 11:25:13687瀏覽

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn