Go语言数组

Go 语言数组声明需要指定元素类型及元素个数,语法格式如下:

var variable_name [SIZE] variable_type

以上为一维数组的定义方式。例如以下定义了数组 balance 长度为 10 类型为 float32:

package main

import "fmt"

func main() {
	var balance [10] float32
	fmt.Println(balance)
}

输出结果:[0 0 0 0 0 0 0 0 0 0]
为啥全是0呢?因为上面的数组没有初始化,默认值都为0

数组的初始化

数组的初始化就是在变量类型后面添加数值

package main

import "fmt"

func main() {
	var balance [3] float32
	balance = [3]float32{2.0,3.0,4.0}
	fmt.Println(balance)
}

上面例子中,balance被定义了长度,就不能再被改变了!
简写:

var balance = [3] float32{2.0,3.0,4.0}

更简化:

balance := [3] float32{2.0,3.0,4.0}

如果数组长度不确定,可以使用 ... 代替数组的长度,编译器会根据元素个数自行推断数组的长度:

package main

import "fmt"

func main() {
	balance := [...] float32{2.0,3.0,4.0}
	fmt.Println(balance)
}

修改数组指定值

修改数组中的值,把数组中的第1个元素修改成2.3

package main

import "fmt"

func main() {
	balance := [...] float32{2.0,3.0,4.0}
	balance[1] = 2.3
	fmt.Println(balance)
}

输出结果:2 2.3 4
从上面输入结果看出2是第0个元素,3.0是第一个元素,所以3.0被修改成了2.3

查询数组指定值

读取数组中的值,把数组第一个元素打印出来

package main

import "fmt"

func main() {
	balance := [...] float32{2.0,3.0,4.0}
	balance[1] = 2.3
	fmt.Println(balance)
	fmt.Println(balance[1])
}


打印数组的长度,使用len参数

package main

import "fmt"

func main() {
	balance := [...] float32{2.0,3.0,4.0}
	fmt.Println(len(balance))
}

输出结果:3

更详细的数组类型信息,可使用下面方法

package main

import "fmt"

func main() {
	balance := [...] float32{2.0,3.0,4.0}
	fmt.Printf("%T\n",balance)
}

输出结果:[3]float32

数组的遍历

最后看下数组的遍历

package main

import (
	"fmt"
)
func main() {
	balance := [...] string{"北京","上海","广州","深圳"}
	for index, value := range balance{
		fmt.Println(index, value)
	}
}

输出结果:

0 北京
1 上海
2 广州
3 深圳

从上面结果可以看出,第一行是数组的元素位数,第二行是数组的从左往后的值

只打印数组中的值

package main

import (
	"fmt"
)
func main() {
	balance := [...] string{"北京","上海","广州","深圳"}
	for _, value := range balance{
		fmt.Println(value)
	}
}

输出结果:

北京
上海
广州
深圳

多维数组

最最后说下多维数组

package main

import (
	"fmt"
)
func main() {
	balance := [3][2] string{
		{"北京","上海"},
		{"广州","深圳"},
		{"大连","青岛"},
	}
	for index, value := range balance{
		fmt.Println(index,value)
	}
}

二维数组 balance := [3][2] string代表3个长度是2的数组,二维数组中第一个数字可以使用...代替,balance := [...][2] string,其他不行

二维数组的遍历

package main

import (
	"fmt"
)
func main() {
	balance := [3][2] string{
		{"北京","上海"},
		{"广州","深圳"},
		{"大连","青岛"},
	}
	for _, value := range balance{
		//fmt.Println(value)
		for _,value := range value{
			fmt.Println(value)
		}
	}
}

输出结果:

北京
上海
广州
深圳
大连
青岛