docs: Array 数组

This commit is contained in:
Shikong 2021-09-17 22:38:59 +08:00
parent 88e4c72f85
commit aed95370cf

76
base/array/main.go Normal file
View File

@ -0,0 +1,76 @@
package main
import "fmt"
func main() {
// 定义一个长度为 3 的 int 数组
// var 变量名 [长度]类型
// 定义后大小不可变
// 如果未初始化 数组内元素 默认为对应类型的初始值
var a1 [3]int
fmt.Printf("a1: %T %+v\n", a1, a1)
// 指定长度 并初始化
var a2 = [10]bool{false, true, false}
fmt.Printf("a2: %T %+v\n", a2, a2)
// 根据元素数量自动推断长度
// [...]类型{元素1,元素2...} 为数组
// []类型{元素1,元素2...} 为 切片
var a3 = [...]bool{true, true, false}
fmt.Printf("a3: %T %+v\n", a3, a3)
// 指定元素下标
var a4 = [...]bool{0: true, 2: true, 4: true}
fmt.Printf("a4: %T %+v\n", a4, a4)
fmt.Println("=========================================================")
// 数组遍历
for i, v := range a4 {
fmt.Printf("%d, %v ", i, v)
}
fmt.Println("\n=========================================================")
// 多维数组
var a5 [3][2]int
fmt.Printf("a5: %T %+v\n", a5, a5)
// 多维数组 初始化
var a6 = [3][2]bool{
1: {true, true},
{false, 1: true},
}
fmt.Printf("a6: %T %+v\n", a6, a6)
// 多维数组遍历
for i, a := range a6 {
fmt.Printf("%d: %v => ", i, a)
for j, v := range a {
fmt.Printf("(%d, %v) ", j, v)
}
fmt.Printf("\t")
}
fmt.Println("\n=========================================================")
// 数组 为 值类型
// 支持 == != 操作符
// [长度]*类型 为指针数组 *[长度]类型 为数组指针
a7 := [...]int{1, 2, 3}
a8 := a7
a8[1] = 8
fmt.Println(a7)
fmt.Println(a8)
fmt.Println("=========================================================")
// 切片 为 引用类型
a9 := []int{1, 2, 3}
a10 := a9
a10[1] = 8
fmt.Println(a9)
fmt.Println(a10)
}