Golang -- 数组

来源:互联网 发布:java文件转md5 编辑:程序博客网 时间:2024/06/05 12:05

数组

声明和初始化

声明数组后, 使用对应类型的零值来初始化数组.
int的零值是0
string的零值是 “” (注意不是nil)

package mainimport (    "fmt")var a1 [3]int  // 声明一个长度3的整型数组func main() {    fmt.Println(a1)  // 结果是 [0 0 0]    a2 := [2]string{}  // 声明一个长度为2的字符串数组    fmt.Println(a2)  // 结果是 [ ]}

声明的同时初始化:

package mainimport (    "fmt")var a1 = [3]int{1, 2}  // 初始化为 [1 2 0]func main() {    fmt.Println(a1)  // 结果是 [1 2 0]    a2 := [4]string{1: "b", 3: "c"}  // 可以指定初始化的位置    fmt.Println(a2)  // 结果是 [ b  c]    a3 := [...]int{1, 2, 3, 4}  // 自动计算数组的长度为4    fmt.Println(a3) // 结果为[1 2 3 4]    a4 := [...]int{1: 9, 4: 8}  // 自动计算长度为5    fmt.Println(a4)  // 结果为[0 9 0 0 8]}

注: []int{1, 2, 3} 创建的是切片 […]int{1, 2, 3} 创建的是数组.

数组的使用:

package mainimport (    "fmt")func main() {    a := [...]string{"A", "B", "C"}    // 只有长度一样,内部元素类型一样,才可以赋值    var array [3]string    array = a    // 直接输出    fmt.Println(array)    // for index 输出    for i := 0; i < len(array); i++ {        fmt.Print(array[i])    }    fmt.Println()    // for range循环输出    for _, e := range array {        fmt.Print(e)    }}

指针数组:

package mainimport (    "fmt")func main() {    // 定义两个字符串变量    a := "A"    fmt.Println("a", &a)    b := "B"    fmt.Println("b", &b)    // 定义一个字符串指针数组    array := [...]*string{&a, &b}    fmt.Println(array)    // 修改a的值, 数组内元素的值也改变    a = "Aa"    fmt.Println(*array[0])}

二维数组:

package mainimport (    "fmt")func main() {    array := [2][3]int{{1, 2, 3}, {4, 5, 6}}    fmt.Println(array)    // for遍历    for _, a := range array {        for _, e := range a {            fmt.Print(e)        }        fmt.Println()    }}

函数间传递数组(推荐传递数组的指针)

package mainimport (    "fmt")func test(arr *[2][3]int) {    // 每个元素都+1    for i, a := range arr {        for j := range a {            arr[i][j] ++        }    }}func main() {    array := [2][3]int{{1, 2, 3}, {4, 5, 6}}    fmt.Println(array)    // 将数组的指针传过去    test(&array)    // for遍历    for _, a := range array {        for _, e := range a {            fmt.Print(e)        }        fmt.Println()    }}