Я новичок в языке программирования Go, и у меня есть назначение для создания и интерпретатора, но я столкнулся с следующей проблемой:
Я хочу определить среду как:
type Environment struct{
parent Environment
symbol string
value RCFAEValue
}
func (env Environment) lookup(lookupSymbol string) RCFAEValue{
if lookupSymbol == env.symbol{
return env.value
} //if parent != nill {
return env.parent.lookup(lookupSymbol)
}
Но я получаю сообщение об ошибке "Недействительный рекурсивный тип среды". Основываясь на моих исследованиях, я сменил родителя на тип * Environment. Но теперь, когда мне нужно создать новую среду с var типа Среда, она получит ошибку "не может использовать fun_Val.ds(type Environment) как тип * Environment in field value". Я создаю среду следующим образом:
Environment{fun_Val.ds,fun_Val.param,exp.arg_exp.interp(env)}
Я пытаюсь сохранить количество кода в этом сообщении до предела, но если вам нужно больше или у вас есть другие вопросы, сообщите мне.