ホームページ > バックエンド開発 > Golang > Go で多次元スライスを 1 次元スライスに平坦化する方法は?

Go で多次元スライスを 1 次元スライスに平坦化する方法は?

Patricia Arquette
リリース: 2024-12-09 07:22:08
オリジナル
258 人が閲覧しました

How to Flatten Multidimensional Slices into One-Dimensional Slices in Go?

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 には一般的なフラット化のための組み込み関数がありませんが、いくつかのパッケージがこの機能を提供しています:

  • arrayutils: https://pkg.go.dev/github.com/icza /arrayutils#FlattenSlice
  • フラット: https://pkg.go.dev/github.com/srika403/ flat#ExtSliceChain

これらのパッケージは、任意の深さの多次元スライスを再帰的に単一次元スライスに平坦化する関数を提供します。

結論

Go は組み込みを提供していませんが、多次元スライスを平坦化する方法には、ループまたは外部パッケージを使用する効果的なソリューションが存在します。これらのアプローチを理解すると、さまざまなプログラミング シナリオに合わせて複雑なデータ構造を効率的に変換できるようになります。

以上がGo で多次元スライスを 1 次元スライスに平坦化する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート