Go入门(6)——数组

Go入门(6)——数组

数组:具有相同唯一类型的一组被编号且长度固定的数据项序列。类型可以是任意的原始类型,如整型、字符串或者自定义类型。数组长度必须是常量表达式,并且必须是非负整数。

声明格式:

var identifier [len]type

如:

var arr_name [9]int

注意事项

如果需要让数组元素类型为任意类型,可以使用空接口作为类型,使用其值前必须做类型判断。

数组索引从0开始;数组长度最大为2Gb。

遍历

由于存在索引,方便了for结构:

package main 

import "fmt"

func main(){
    var arr1 [5]int
    
    for i:=0; i < len(arr1); i++{
        arr1[i] = 2 * i
    }
    
    for i:=0; i < len(arr1); i++{
        fmt.Printf("Array at index %d is %d\n", i, arr1[i])
    }
}

输出结果为:

Array at index 0 is 0
Array at index 1 is 2
Array at index 2 is 4
Array at index 3 is 6
Array at index 4 is 8

此外还有for-range结构:

for i, _ := range arr1{
    // ...
}

多维数组

Go的多维数组是矩形式的。

package main 

const (
	WIDTH = 1920 
    HEIGHT = 1080
)

type pixel int 
var screen [WIDTH][HEIGHT]pixel

func main(){
    for y:=0; y < HEIGHT; y++{
        for x:=0; x < WIDTH; x++{
            screen[x][y] = 0
        }
    }
}

将数组传递给函数

将大型数组传递给函数非常消耗内存。以下两种方法可以避免这种问题:

  1. 传递数组的指针;
  2. 使用数组的切片。
package main 

import "fmt"

func main(){
    // 传指针
    array := [3]float64{7.0, 8.5, 9.2}
    x := Sum(&array)  
    fmt.Printf("The sum of the array is: %f", x)
}

func Sum(a *[3]float64)(sum float64){
    for _, v := range a{
            sum += v
    }
    return 
}
上一篇:把给定字符串中的数字排序


下一篇:数组去重及冒泡排序