Home >Backend Development >Golang >How to Flatten a 2D Slice into a 1D Slice in Go?

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

DDD
DDDOriginal
2024-12-03 21:34:16709browse

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

Flattening a 2D Slice into a 1D Slice in Go

In Go, there is currently no native function that allows for the flattening of a 2D slice into a 1D slice in a single operation. However, there are several straightforward and explicit ways to achieve this.

One approach is to use a loop to iterate over each element of the 2D slice and append it to the 1D slice:

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

This method is clear and concise, making it easy to understand and implement.

Another option is to leverage the built-in append() function to concatenate multiple slices into a single slice:

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

This approach directly appends the entire 2D slice to the 1D slice, providing a slightly more concise solution.

Finally, if the 2D slice contains slices of equal length, it is possible to use slicing and the copy() function to create the 1D slice:

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

This method is more complex but may be more efficient in certain scenarios.

While Go lacks a dedicated function for flattening slices, these workarounds offer simple and efficient solutions for converting 2D slices into 1D slices.

The above is the detailed content of How to Flatten a 2D Slice into a 1D Slice in Go?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn