Я новичок в языке программирования Go, и у меня есть задание для создания и интерпретатора, но я столкнулся со следующей проблемой:
Я хочу определить Environment как:
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». Основываясь на моем исследовании, я изменил родительский элемент на тип * Environment. Но теперь, когда мне нужно создать новую среду с переменной типа Environment, появляется ошибка «не может использовать fun_Val.ds (тип Environment) как тип * Environment в значении поля». Я создаю среду следующим образом:
Environment{fun_Val.ds,fun_Val.param,exp.arg_exp.interp(env)}
Я пытаюсь ограничить количество кода в этом сообщении, но если вам нужно больше или у вас есть другие вопросы, пожалуйста, дайте мне знать.