идёшь циклом по строке, пытаешься прочитать число (последовательность цифр 0-9), если удаётся прочитать число то парсим с помощью strconv.ParseInt и записываем его в переменную x если не удаётся - возвращаем ошибку (syntax error)
дальше ожидаем оператор, если там не оператор то опять ошибка, иначе запоминаем какой это тип оператор и ожидаем после него снова число, и если удаётся его прочитать то
if operator == '+' { x += n } else { x -= n }
пробелы просто перепрыгиваем и игнорируем. читаем пока не дойдём до конца строки.
если появятся операторы множения и деления, тогда подход нужен уже совершенно иной чтобы учитывать operator precedence. В таком случае было бы полезно построить AST
А могу я, например, создать две карты map, где : digits := map[string]int {"0":0, "1":1, и т.д.} operator := map[string]func (int, int) int {"+": функция сложения, "-" : функция вычитания}
И сравнивать символы последовательности с картой цифр, а оператор с картой операторов?
из того что я понял это: вы пытаетесь научиться программировать 🙂 одни из главных принципов программирования: - не усложняйте задачу, KISS (keep it simple & stupid) - не решайте задачи, которых не существует - не потребляйте больше ресурсов, чем необходимо