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

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

Linda Hamilton
发布: 2024-12-01 11:25:13
原创
688 人浏览过

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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板