首页 >后端开发 >Golang >如何解决在 Go 结构中使用递归类型时出现'无效递归类型”错误?

如何解决在 Go 结构中使用递归类型时出现'无效递归类型”错误?

Linda Hamilton
Linda Hamilton原创
2024-12-01 11:25:13689浏览

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