如何获取一组数组(字符串)并在 Golang 中创建这些数组的多维切片?

我正在尝试实现一个函数,当传递一个字符串数组时,它会创建一个数组切片,并将每个传递的数组添加到其中。它将返回所有传递的数组的最后一个切片。


作为一个测试,我初始化了 4 个数组并尝试创建一个函数来执行此操作。然而,它失败得相当惨。这就是我到目前为止所拥有的。不知道该怎么做。


func main() {

    array1 := []string{"x", "o", "x", "_", "_"}

    array2 := []string{"0", "o", "x", "_", "_"}

    array3 := []string{"o", "o", "o", "_", "_"}

    array4 := []string{"o", "o", "o", "o", "o"}


    FinalSlice(array1)

    FinalSlice(array2)

    FinalSlice(array3)

    fmt.Println(FinalSlice(array4))


}


func FinalSlice(array []string) [][]string {

    var slice [][]string

    for i, _ := range slice {

        slice[i] = array

    }

    return slice


}

现在这是输出:


[]


小唯快跑啊
浏览 102回答 2
2回答

烙印99

那是因为你遍历了一个没有元素的空切片。所以你的循环for i, _ := range slice {}实际上会运行 0 次迭代(这就是你最终得到一个空数组的原因)。我不明白你想要达到的确切结果,但是如果你想将数组连接成一个多维的,你可以使用下面的代码:package mainimport "fmt"func AppendSlice(source [][]string, value []string) [][]string {    return append(source, value)}func main() {    array1 := []string{"x", "o", "x", "_", "_"}    array2 := []string{"0", "o", "x", "_", "_"}    array3 := []string{"o", "o", "o", "_", "_"}    array4 := []string{"o", "o", "o", "o", "o"}    var finalArray [][]string    finalArray = AppendSlice(finalArray, array1)    finalArray = AppendSlice(finalArray, array2)    finalArray = AppendSlice(finalArray, array3)    finalArray = AppendSlice(finalArray, array4)    // [[x o x _ _] [0 o x _ _] [o o o _ _] [o o o o o]]    fmt.Println(finalArray) }这可能会在很多方面得到改进,请随意使用此解决方案:https ://go.dev/play/p/vXvqlRZuOUI

德玛西亚99

就不能说类似的话func bundleSlices( slices ...[]int) [][]int {    return slices}接着:package mainimport "fmt"func main() {    arr1 := []int{1, 2, 3}    arr2 := []int{4, 5, 6}    arr3 := []int{7, 8, 9}    bundled := bundleSlices( arr1, arr2, arr3 )    fmt.Println(bundled)}要得到[[1 2 3] [4 5 6] [7 8 9]]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go