美文网首页
Golang——数组array

Golang——数组array

作者: Cici冬雪 | 来源:发表于2020-05-21 21:41 被阅读0次

数组是同一种数据类型元素的集合。
数组声明时需要确定数组大小,一旦定义,不可修改
数组的长度必须是常量,并且长度是数据类型的一部分[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

    数组是同一种数据类型元素的集合。数组声明时需要确定数组大小,一旦定义,不可修改。数组的长度必须是常量,并且长度是数...

  • Golang 中的数组 (array) 和切片 (slice)

    huangwenwei - 字里行间 | Golang 中的数组 (array) 和切片 (slice) 中文描述...

  • 数组Array

    Golang Array和以往认知的数组有很大不同。 数组初始化:一维数组: 代码: 输出结果: 多维数组: 代码...

  • 《日子》golang-数组array

    数组Array -定义数组的格式:var [n] ,n>=0-数组长度也是类型的一部分,因此具有不...

  • Golang:数组

    Array 数组是同一种数据类型元素的集合。在Golang中,数组从声明就确定,使用时可以修改数组成员,但是数组大...

  • JavaScript 教程-数组

    1,Array 定义数组/获取 2,Array 数组长度 3,Array 数组 特别 4,Array 数组方法 实例

  • Golang数组与切片

    Golang数组与切片 数组的声明 Golang中的数组属于静态数组,不允许动态扩展 Golang中数组会默认初始...

  • Golang学习笔记5——数组array

    1.array的定义 定义数组的格式: 数组长度也是类型的一部分,因此具有不同长度的数组为不同类型 数组在go中为...

  • array_shift

    array_shift — 将数组开头的单元移出数组 array_shift ( array &$array ) ...

  • Array数组

    Array遍历 Array数组删除 修改数组

网友评论

      本文标题:Golang——数组array

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