invalid recursive type in a struct in go

You need to define Environment as:

type Environment struct {
    parent *Environment // note that this is now a pointer
    symbol string
    value  RCFAEValue

Otherwise the compiler has no way to figure out what the size of the Environment structure is. A pointer’s size is known, but how big is something that contains itself? (And the inner struct contains itself as well, as does the inner inner struct, and so on.)

Creating the Environment will then look like:

Environment{&fun_Val.ds, fun_Val.param, exp.arg_exp.interp(env)}

Leave a Comment