Go での多次元スライスから 1 次元スライスへの変換
プログラミングでは、多くの場合、多次元スライスを 1 次元スライスに変換する必要があります。さまざまな理由。ただし、Go はこの操作を実行するための直接関数を提供しません。
所定の 2D スライスからの 1D スライス
既知の静的な 2D スライスの場合、単純なループで次のことができます。効率的に 1D スライスに平坦化します:
var arr2d = [][]int32{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}} var arr1d []int32 for _, a := range arr2d { arr1d = append(arr1d, a...) }
このアプローチは各要素に対して反復されます。 2D スライスでそれらを 1D スライス arr1d に累積すると、次の結果が得られます。
arr1d = [1, 2, 3, 4, 5, 6, 7, 8, 9]
未知の次元に対する汎用平坦化
2D の次元が異なる場合の場合スライスが不明または動的である場合は、より堅牢なアプローチが必要です。 Go には一般的なフラット化のための組み込み関数がありませんが、いくつかのパッケージがこの機能を提供しています:
これらのパッケージは、任意の深さの多次元スライスを再帰的に単一次元スライスに平坦化する関数を提供します。
結論
Go は組み込みを提供していませんが、多次元スライスを平坦化する方法には、ループまたは外部パッケージを使用する効果的なソリューションが存在します。これらのアプローチを理解すると、さまざまなプログラミング シナリオに合わせて複雑なデータ構造を効率的に変換できるようになります。
以上がGo で多次元スライスを 1 次元スライスに平坦化する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。