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