Maison >développement back-end >Golang >Comment aplatir une tranche 2D en une tranche 1D avec Go ?

Comment aplatir une tranche 2D en une tranche 1D avec Go ?

DDD
DDDoriginal
2024-12-03 21:34:16705parcourir

How to Flatten a 2D Slice into a 1D Slice in Go?

Aplatir une tranche 2D en une tranche 1D dans Go

Dans Go, il n'existe actuellement aucune fonction native permettant l'aplatissement d'un Tranchez 2D en tranche 1D en une seule opération. Cependant, il existe plusieurs façons simples et explicites d'y parvenir.

Une approche consiste à utiliser une boucle pour parcourir chaque élément de la tranche 2D et l'ajouter à la tranche 1D :

var newArr []int32
for _, a := range arr {
  newArr = append(newArr, a...)
}

Cette méthode est claire et concise, ce qui la rend facile à comprendre et à mettre en œuvre.

Une autre option consiste à tirer parti de la fonction append() intégrée pour concaténer plusieurs tranches en une seule tranche :

newArr := append([]int32{}, arr...)

Cette approche ajoute directement la tranche 2D entière à la tranche 1D, offrant une solution légèrement plus concise.

Enfin, si la tranche 2D contient des tranches de de longueur égale, il est possible d'utiliser le slicing et la fonction copy() pour créer la tranche 1D :

length := len(arr[0])
newArr := make([]int32, len(arr) * length)
for i, a := range arr {
  copy(newArr[i * length:], a)
}

Cette méthode est plus complexe mais peut être plus efficace dans certains scénarios.

Bien que Go ne dispose pas d'une fonction dédiée pour aplatir les tranches, ces solutions de contournement offrent des solutions simples et efficaces pour convertir des tranches 2D en tranches 1D.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn