【Golang系列】-数组

2022-03-09

数组

数组是相同数据类型的一组数据的集合,数组一旦定义长度不能修改,数组可以通过下标(或者叫索引)来访问元素

数组定义

数组定义的语法:

var variable_name [SIZE] variable_tpye

  • variable_name:数组名称
  • SIZE:数组长度,必须是常量
  • variable_tpye:数组保存元素的类型

import "fmt"

func f() {
    var a [2]string
    fmt.Println(a)
}

func main() {
    f()
}

数组初始化
  • 布尔:false
  • 字符串:空
  • int:0
package main

import "fmt"

func f() {
    var a [2]string
    var b [1]int
    var c [1]bool
    fmt.Println(a)
    fmt.Println(b)
    fmt.Println(c)
}

func main() {
    f()
}

结果:

[Running] go run "/Users/lihui/Desktop/gocode/src/chapter05/dome01.go"
[ ]
[0]
[false]
[Done] exited with code=0 in 0.99 seconds

初始化列表初始化:

使用初始化列表,就是将值写在大括号里面

package main

import "fmt"

func f() {
    var a = [2]string{"cao", "lihui"}
    var b = [2]int{1, 2}
    var c = [1]bool{true}
    fmt.Println(a)
    fmt.Println(b)
    fmt.Println(c)
}

func main() {
    f()
}

运行结果:

[Running] go run "/Users/lihui/Desktop/gocode/src/chapter05/dome01.go"
[cao lihui]
[1 2]
[true]

[Done] exited with code=0 in 0.914 seconds

省略数组长度

数组长度可以省略,使用...代替,自动推断

访问数组元素

可以通过下标的方式,来访问数据元素,数组的最大下标为数组长度-1,大于这个下标会发生数组越界

package main

import "fmt"

func f() {
    var a [3]int
    a[0] = 100
    a[1] = 200
    fmt.Println(a)
}

func main() {
    f()
}

修改

package main
import "fmt"
func f() {
    var a [3]int
    a[0] = 100
    a[1] = 200
    fmt.Println("初始化赋值:", a)
    fmt.Println("--------")
    a[0] = 1
    a[1] = 2
    fmt.Println("修改后", a)
}
func main() {
    f()
}

结果:

[Running] go run "/Users/lihui/Desktop/gocode/src/chapter05/dome01.go"
初始化赋值: [100 200 0]
--------
修改后 [1 2 0]

数组的长度
package main
import "fmt"
func f() {
    var a = [3]int{1, 2, 3}
    fmt.Println("初始化赋值:", a)
    fmt.Println("数组的长度是:", len(a))
}
func main() {
    f()
}

数组的遍历:

可以根据数组长度,通过for循环的方式 来遍历数组,数组的长度可以使用len函数来获得

package main
import "fmt"
func f() {
    a := [...]int{1, 2, 3, 4, 5, 6}

    for i := 0; i <= len(a); i++ {
        fmt.Println(i)
    }
}

func main() {
    f()
}

下标
package main
import "fmt"
func f() {
    var a1 = [3]int{1, 2, 3}
    for i, v := range a1 {
        fmt.Println(i, v)
    }
}
func main() {
    f()
}