言語を学ぶための練習として、Go で簡単なプログラムを書いています。プログラムはゲーム プレーヤーです。exec.Command
テキスト ベースのゲームであり、StdinPipe
/を介して通信しStdoutPipe
ます。いろいろいじってたくさんのオンライン ドキュメントを読んだ後、なんとかスケルトンが機能するようになりました。Hello World に相当するもので、双方向通信を確立し、プログラムの終了などのエラーを処理できます。
現在、実際にゲームをプレイする AI コードを作成しようとしています。私の目的は言語を学ぶことなので、スタイルには細心の注意を払っています。単に C (または他の言語) を Go で書きたいだけではありません。
プログラム内の明らかな作業分担 (すべてのセットアップが完了すると) は、2 つの部分に分けられます。まず、プログラムは現在の状態を調べて、ゲームに発行するコマンドを決定します。次に、プログラムは返されたデータを確認し、それに応じて状態を更新します。(はい、単純なゲームです。入力を待ってから応答します。タイミングの問題はありません。)
この状態情報がどこに行くべきかわかりません。すべてをグローバルスコープにダンプするのは間違っているように感じ、巨大なシングルトンオブジェクトを作成するのはさらに悪いように思えます (そして Go は特に OO ではありません)。いずれにせよ、関数が 20 以上の変数を渡して返すようにしたくありません。
一般的なアドバイスでも構いませんが、慣用的に Go に適しているものに最も関心があります。リクエストに応じてコードを共有できますが、役に立たないと思います。