недопустимый рекурсивный тип в структуре в go

Я новичок в языке программирования 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)}

Я пытаюсь ограничить количество кода в этом сообщении, но если вам нужно больше или у вас есть другие вопросы, пожалуйста, дайте мне знать.

38
задан kfeeney 24 November 2011 в 18:03
поделиться