Go で 2 次元配列を作成しようとしています:
board := make([][]string, m)
for i := range board {
board[i] = make([]string, n)
}
しかし、その冗長性を考えると、この問題を処理するためのより良い、またはより簡潔な方法(動的配列を生成するか、またはボードゲームのようなデータを処理するための異なる/慣用的なデータ構造)があるかどうか疑問に思っています。
背景:
- これはボードゲーム用です
- ボードの寸法は、ユーザーがプレイを開始するまでわかりません (つまり、MxN)。
- 各セルに任意の文字 (または単一の文字列) を保存したいと考えています。私の TicTacToe ゲームでは、それは 'X' または 'O' (またはユーザーが選択した他の文字) になります。
ベストアンサー1
サンプル コードで構築しているのは 2D 配列ではなく、スライスのスライスです。この型では各サブスライスの長さが異なる可能性があるため、それぞれに個別の割り当てがあります。
ただし、ボードを単一の割り当てで表現したい場合は、単一のスライスを割り当ててから、単純な演算を使用して要素がどこにあるかを判断するという方法があります。例:
board := make([]string, m*n)
board[i*m + j] = "abc" // like board[i][j] = "abc"