Go基础:008.数组

49 阅读1分钟

数组是具有相同唯一类型的一组已编号且长度固定的数据项序列。

数组元素可以通过索引(位置)来读取(或者修改),索引从 0 开始,第一个元素索引为 0,第二个索引为 1,以此类推。

数组声明

package main

import "fmt"

func main() {
	// 声明一个长度为3的字符串数组
	var names [3]string

	// 声明一个长度为5的整型数组
	var nums [5]int

	// 声明一个长度为6浮点型数组
	var prices [6]float32

	fmt.Printf("%T\n", names)  //[3]string
	fmt.Printf("%T\n", nums)   //[5]int
	fmt.Printf("%T\n", prices) //[6]float32
}

数组初始化

package main

import "fmt"

func main() {
	// 1. 声明一个长度为3的字符串数组
	var names [3]string
	// 初始化数组
	names = [3]string{"Jim", "Tom", "Mike"}

	fmt.Printf("%T\n", names) //[3]string
	fmt.Println(names)        //[Jim Tom Mike]

	// 2. 短变量形式声明
	colors := [2]string{"red", "green"}

	fmt.Printf("%T\n", colors) //[2]string
	fmt.Println(colors)        //[red green]

	// 3. 通过下标声明
	nums := [2]int{0: 1, 1: 3}
	fmt.Println(nums) //[1,3]

	// 4. 长度不确定,可以使用...代替数组的长度
	words := [...]string{"hello", "world", "earth"}
	fmt.Println(words) //[hello world earth]
}

数组访问和遍历

package main

import "fmt"

func main() {
	nums := [...]int{1, 2, 3, 4, 5, 6, 7, 8, 9}

	//1. 数组访问,通过下标访问
	fmt.Println(nums[0]) //1

	//2. 数组访问,超出下标报错
	// fmt.Println(nums[9]) //invalid argument: index 9 out of bounds [0:9]

	//3. 数组修改值
	fmt.Println(nums) //[1 2 3 4 5 6 7 8 9]
	nums[0] = 10
	fmt.Println(nums) //[10 2 3 4 5 6 7 8 9]

	//4. 数组长度
	fmt.Println(len(nums)) //9

	//5. 数组遍历
	for i := 0; i < len(nums); i++ {
		fmt.Printf("%d"+";", nums[i]) //10;2;3;4;5;6;7;8;9;
	}
}