美文网首页
go 二维数组(多维数组)

go 二维数组(多维数组)

作者: StevenQin | 来源:发表于2019-03-31 14:59 被阅读0次
    • 快速入门

    请用二维数组输出如下图形

            0 0 0 0 0 0
            0 0 1 0 0 0
            0 2 0 3 0 0
            0 0 0 0 0 0
    
    package main
    
    import (
        "fmt"
    )
    
    func main() {
        //定义/声明二维数组
        var arr [4][6]int
        //赋值
        arr[1][2] = 1
        arr[2][1] = 2
        arr[2][3] = 3
    
        //遍历二维数组,按照要求输出图形
        for i := 0; i < 4; i++ {
            for j := 0; j < 6; j++ {
                fmt.Print(arr[i][j], " ")
            }
            fmt.Println()
        }
    }
    

    使用方法一:

    • 先声明/定义,再赋值
     var  arr [2][3]int,再赋值
    
        var arr [2][3]int
        arr[1][1] = 10
        fmt.Println(arr)
        fmt.Printf("arr[0]的地址=%p\n", &arr[0])
        fmt.Printf("arr[1]的地址=%p\n", &arr[1])
        fmt.Printf("arr[0][0]的地址=%p\n", &arr[0][0])
        fmt.Printf("arr[1][0]的地址=%p\n", &arr[1][0])
    

    使用方法二

    • 直接初始化
      1、声明:var 数组名 [大小][大小]类型 = [大小][大小]类型{{初值...},{初值...}}
      2、赋值 (有默认值,比如 int 类型就是0)
      3、使用演示
        var arr [2][3]int = [2][3]int{{1, 2, 3}, {4, 5, 6}}
        fmt.Println(arr)
    
        //其它声明方法
        var arr1 = [2][3]int{{1, 2, 3}, {4, 5, 6}}
        fmt.Println("arr1=", arr1)
    
        var arr2 = [...][3]int{{1, 2, 3}, {4, 5, 6}}
        fmt.Println("arr2=", arr2)
    
        var arr3 [2][3]int = [...][3]int{{1, 2, 3}, {4, 5, 6}}
        fmt.Println("arr3=", arr3)
    

    二维数组遍历

    1、双层 for循环遍历
    2、for-range遍历

        var arr [2][3]int = [2][3]int{{1, 2, 3}, {4, 5, 6}}
        fmt.Println(arr)
        fmt.Println()
        //for循环遍历
        for i := 0; i < len(arr); i++ {
            for j := 0; j < len(arr[i]); j++ {
                fmt.Printf("arr[%v][%v] = %v \n", i, j, arr[i][j])
            }
        }
    
        fmt.Println()
        //for-range遍历
        for i, v1 := range arr {
            for j, v2 := range v1 {
                fmt.Printf("arr[%v][%v] = %v \n", i, j, v2)
            }
        }
    

    二维数组的应用案例

    定义二维数组,用来保存三个班,每个班五名同学成绩
    并求出每个班级平均分,以及所有班级平均分

        var scores [3][5]float64
        //循环输入成绩
    
        //接收成绩的变量
        var sc float64 = 0
        var totalSum float64 = 0
        for i := 0; i < len(scores); i++ {
            var total float64 = 0
            for j := 0; j < len(scores[i]); j++ {
                fmt.Printf("请输入第%v个班的每%v个同学的成绩:", i+1, j+1)
                fmt.Scanln(&sc)
                scores[i][j] = sc
                total += scores[i][j]
            }
            totalSum += total
            //每执行到这里,一个班循环完
            fmt.Printf("%v班平均分为%.2f\n", i+1, total/float64(len(scores[i])))
        }
    
        fmt.Printf("所有班级平均分为%.2f\n", totalSum/15)
    

    相关文章

      网友评论

          本文标题:go 二维数组(多维数组)

          本文链接:https://www.haomeiwen.com/subject/tlxubqtx.html