您的位置 首页 golang

Golang——数组array

数组是同一种数据类型元素的集合。
数组声明时需要确定数组大小,一旦定义,不可修改
数组的长度必须是常量,并且长度是数据类型的一部分[5]int[3]int是不同的类型。
数组索引从0开始。
数组是值类型。

var 变量名 [数量]T

声明和初始化

func main() {    //数组声明    var a [5]int    var b [3]int    //数组赋值    a = [5]int{1,2,3,4,5}        b = [3]int{1}      fmt.Println(a)   //[1 2 3 4 5]    fmt.Println(b)   //[1 0 0]    fmt.Printf("a:%T b:%T\n", a, b)  //a:[5]int b:[3]int    //数组声明又赋值    var c = [3]string{"a","b","c"}    fmt.Println(c) //[a b c]    //不填写长度,系统推导    var d = [...]int{1,3,4,5,6,7,8,9}    fmt.Println(d)    //[1 3 4 5 6 7 8 9]    //根据索引值初始化    var e [20]int    e = [20]int{19:1}    fmt.Println(e)     //[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1]} 

数组使用

func main() {    var c = [3]string{"a","b","c"}    //直接通过索引取数组中某个值    fmt.Println("c[1]=" + c[1])    // for遍历    for i := 0; i < len(c); i++ {        fmt.Printf("c[%d]=%s\n", i, c[i])    }    // for range遍历    for i := range c {        fmt.Printf("c[%d]=%s\n", i, c[i])    }    for i,v := range c {        fmt.Printf("c[%d]=%s\n", i, v)    }} 

注意,数组是值类型

func main() {    a := [3]int{1, 2, 3}    b := a //把a拷贝一份给了b    b[0] = 11    fmt.Println(a)   //[1 2 3]    fmt.Println(b)   //[11 2 3]    a[1] = 22    fmt.Println(a)   //[1 22 3]    fmt.Println(b)   //[11 2 3]} 

多维数组声明和初始化

func main() {    var a [3][2]int    fmt.Println(a)   // [[0 0] [0 0] [0 0]]    a = [3][2]int{        [2]int{1, 2},        [2]int{3, 4}}    a = [3][2]int{        {1, 2},        {3, 4}}    fmt.Println(a)   // [[1 2] [3 4] [0 0]]    b := [3][2]int{        {1, 2},        {3, 4},    }    fmt.Println(b)   // [[1 2] [3 4] [0 0]]    //第一层可以用...,其它层不可以用    c := [...][2]int{        {1, 2},        {3, 4},    }    fmt.Println(c)   //[[1 2] [3 4]]} 

多维数组使用

func main() {    b := [3][2]int{        {1, 2},        {3, 4},    }    fmt.Println(b[1][1])   // 4    for i := 0; i < len(b); i++ {        for j := 0; j < len(b[i]); j++{            fmt.Printf("b[%d][%d]=%d\n", i, j, b[i][j])        }    }    for i, v1 := range b {        for j, v := range v1 {            fmt.Printf("b[%d][%d]=%d\n", i, j, v)        }     }} 

练习题

1.求数组所有元素的和

func main() {    // 求数组所有元素的和    var a = [5]int{1, 3, 5, 7, 8}    sum := 0    for _,v := range a {        sum += v    }    fmt.Printf("sum=%d\n", sum)} 

2.找出数组中和为指定值的两个元素的下标,比如从数组[1,3,5,7,8]找出和为8的两个元素的下标分别为(0,3)和(1,2)

func main() {    // 找出数组中和为指定值的两个元素的下标,比如从数组[1,3,5,7,8]找出和为8的两个元素的下标分别为(0,3)和(1,2)    s := 8    for i,v := range a {        for j := i + 1; j < len(a); j++ {            if v + a[j] == s {                fmt.Printf("(%d,%d)\n", i, j)            }        }    }    for i,v := range a {        other := s - v        for j := i + 1; j < len(a); j++ {            if i == j {                continue            }            if other == a[j] {                fmt.Printf("(%d,%d)\n", i, j)            }        }    }} 

文章来源:智云一二三科技

文章标题:Golang——数组array

文章地址:https://www.zhihuclub.com/650.shtml

关于作者: 智云科技

热门文章

发表回复

您的电子邮箱地址不会被公开。

网站地图