📜  如何在 Golang 中创建和打印多维切片?(1)

📅  最后修改于: 2023-12-03 15:08:37.198000             🧑  作者: Mango

如何在 Golang 中创建和打印多维切片?

在 Golang 中,多维切片可以被用来表示一个二维矩阵或者更高维的数组。本文将介绍如何创建和打印多维切片。

创建多维切片

创建多维切片,可以用嵌套切片的形式,也可以用 make 函数来创建。

嵌套切片

下面的代码演示了如何用嵌套切片的形式来创建一个二维切片:

package main

import "fmt"

func main() {
    matrix := [][]int{
        []int{1, 2, 3},
        []int{4, 5, 6},
        []int{7, 8, 9},
    }

    fmt.Println(matrix)
}

输出结果:

[[1 2 3] [4 5 6] [7 8 9]]
make 函数

下面的代码演示了如何用 make 函数来创建一个二维切片:

package main

import "fmt"

func main() {
    rows, cols := 3, 3
    matrix := make([][]int, rows)

    for i := range matrix {
        matrix[i] = make([]int, cols)
    }

    matrix[0][0] = 1
    matrix[1][1] = 5
    matrix[2][2] = 9

    fmt.Println(matrix)
}

输出结果:

[[1 0 0] [0 5 0] [0 0 9]]
打印多维切片

打印多维数组,可以使用循环嵌套,或者使用 fmt 包中的 Sprint 函数。

循环嵌套

下面的代码演示了如何用循环嵌套的形式来打印一个二维切片:

package main

import "fmt"

func main() {
    matrix := [][]int{
        []int{1, 2, 3},
        []int{4, 5, 6},
        []int{7, 8, 9},
    }

    for _, row := range matrix {
        for _, col := range row {
            fmt.Print(col, " ")
        }
        fmt.Println()
    }
}

输出结果:

1 2 3 
4 5 6 
7 8 9 
Sprint 函数

下面的代码演示了如何使用 fmt 包中的 Sprint 函数来打印一个二维切片:

package main

import (
    "fmt"
    "strings"
)

func main() {
    matrix := [][]int{
        []int{1, 2, 3},
        []int{4, 5, 6},
        []int{7, 8, 9},
    }

    fmt.Println(strings.Join(vToString(matrix), "\n"))
}

func vToString(matrix [][]int) []string {
    var output []string
    for _, row := range matrix {
        var rowStr []string
        for _, col := range row {
            rowStr = append(rowStr, fmt.Sprintf("%d", col))
        }
        output = append(output, strings.Join(rowStr, " "))
    }
    return output
}

输出结果:

1 2 3
4 5 6
7 8 9
结论

以上是如何在 Golang 中创建和打印多维切片的简单介绍。嵌套切片和 make 函数都是创建多维切片的常用方法。而循环嵌套和 Sprint 函数则是打印多维切片的两种不同的实现方式。