Я пишу простую программу в Go как упражнение, чтобы выучить язык. Программа является игровым игроком: это текстовая игра, а затем общается с ней через StdinPipe
/StdoutPipe
. После некоторого обмана и чтения многих онлайн-документов мне удалось получить работу скелета - эквивалент Hello World, где я установил двустороннюю связь и могу обрабатывать ошибки, такие как завершение программы.Хранение состояния в Go
Теперь я пытаюсь написать фактический игровой код AI. Поскольку моя цель - изучать язык, я стараюсь быть очень осторожным со стилем - я не просто хочу писать C (или какой-то другой язык) в Go.
Очевидное разделение труда в программе (после завершения всей установки) состоит из двух частей. Во-первых, программа просматривает текущее состояние и решает, какую команду следует выдать игре. Во-вторых, программа просматривает возвращаемые данные и соответственно обновляет состояние. (Да, это простая игра - она ждет ввода, а затем отвечает, нет проблем с синхронизацией.)
Я не уверен, куда должна идти эта информация о состоянии. Сбрасывание всего этого в глобальную сферу кажется неправильным, и создание массивного одноэлементного объекта кажется еще хуже (и Go не особенно OO). В любом случае я не хочу, чтобы функции проходили и возвращали 20+ переменных.
Общие советы в порядке, но меня больше всего интересует то, что идиоматически подходит для Go. По запросу я могу поделиться кодом, но я не думаю, что это было бы полезно.
Благодарим за ответ. Если вы не возражаете, я подожду до завтра, чтобы принять ответ - я все еще размышляю над тем, какое решение лучше всего. (+1 в то же время.) – Charles