GO语言入门 - 数组

数组定义

var 数组变量名 [元素数量]T

比如:var a [5]int, 数组的长度必须是常量,并且长度是数组类型的一部分。一旦定义,长度不能变。 [5]int[10]int是不同的类型。

数组可以通过下标进行访问,下标是从0开始,最后一个元素下标是:len-1,访问越界(下标在合法范围之外),则触发访问越界,会panic。

数组练习题

/*
@Time : 2020-03-12 11:53
@Author : ianthony
@File : main
@Software: GoLand
*/
package main

import "fmt"

func main() {
        // 初始化数组 方法一
        var a1 [5]int
        a1 = [5]int{1, 2, 3, 4, 5}
        fmt.Println(a1)
        
        // 初始化数组 方法二
        a2 := [...]int{1, 2, 3, 4, 5}
        fmt.Println(a2)
        
        a3 := [...]string{"1", "1", "1", "1", "1", "1", "1", "1", "1", "1",}
        fmt.Println(len(a3), a3)
        
        // 指定数组中索引的数值
        a4 := [20]int{0: 1, 19: 19}
        fmt.Println(a4)
        
        // 遍历数组 方法一
        var a5 = [...]string{"北京", "上海", "深圳"}
        for i := 0; i < len(a5); i++ {
                fmt.Println(a5[i])
        }
        
        // 遍历数组 方法二
        for k, v := range a5 {
                fmt.Println(k, v)
        }
        
        // 遍历多维数组
        a6 := [3][2]string{
                {"北京", "上海"},
                {"广州", "深圳"},
                {"成都", "重庆"},
        }
        
        for _, v1 := range a6 {
                for _, v2 := range v1 {
                        fmt.Printf("%s\t", v2)
                }
                fmt.Println()
        }
        
        // 遍历多维数组
        a7 := [...]int{7, 8, 9}
        fmt.Println(a7)
        
        a8 := [3][2]int{
                {1, 2},
                {11, 22},
                {111, 222},
        }
        fmt.Println(a8)
        
        for _,V1 :=range a8{
                for _,V2 := range V1{
                        fmt.Printf("%d\t",V2)
                }
                fmt.Println()
        }
        
        // 计算数组中所有元素的和
        num :=0
        a9 :=[...]int{1,3,5,7,8}
        for _,v3:=range a9{
                num +=v3
        }
        fmt.Println(num)

        
        // 求数组中和为8元素的索引是什么
        var a10 = [5]int{1, 3, 5, 7, 8}
        for i:=0;i<len(a10);i++{
                for j:=0;j<len(a10);j++{
                        if a10[i] + a10[j] == 8{
                                fmt.Println(i,j)
                        }
                }
        }
}