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中文网其他相关文章!