数组是具有相同唯一类型的一组已编号且长度固定的数据项序列。
数组元素可以通过索引(位置)来读取(或者修改),索引从 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;
}
}