# 数组

# 定义

package main
import "fmt"
func main() {
	var a = []int32{1, 2, 3, 4}
	fmt.Println(a)
}

这个例子中 a 就是数组,数组是具有相同唯一类型的一组已编号且长度固定的数据项序列。
定义格式如下: var var1 = [size]type{value} , 数组内只能存储同一种数据,不可以像 python 一样存储多种数据

数字的长度可以不填,代表由值自动决定长度

# 读取

package main
import "fmt"
func main() {
	var a = []int32{1, 2, 3, 4}
	fmt.Println(a[1])
}

通过在数组后加 [index] 就可以访问到指定的值,同理,它也可以被赋值给其他变量
索引从 0 开始,到长度 - 1 结束。

类型转换下一节再写

package main
import "fmt"
func main() {
    var a = []int32{1, 2, 3, 4}
    var b = a[1:3]
    fmt.Println(b)
}

index 可以是 [start:end] 格式的,但务必注意: 切片含头不含尾

# 改写

package main
import "fmt"
func main() {
	var a = []int32{1, 2, 3, 4}
	a[1] = 3
	fmt.Println(a) // 输出内容:[1 3 3 4]
}

格式: arr[index]=value
使用 arr=append(arr,arr...) 来合并数组, ... 代表解压切片

package main
import "fmt"
func main() {
	var a = []int32{1, 2, 3, 4}
	var b = []int32{5, 6, 7, 8}
	a = append(a, b...)
	fmt.Println(a)
}

# 循环

# for 循环格式

首先,go 语言没有 while 循环,只有 for 循环
格式如下:

for init;condition;post{ code } // 类似于 C 的 for 结构
for condition{ code } // 类似于 C 的 while 循环
for () //for 死循环

init 为初始值,condition 为布尔表达式,post 为自增 / 减操作符

布尔表达式为满足条件时退出,而非满足条件运行

这是一个输出从 1 到 10 数字的程序

package main
import "fmt"
func main() {
	for a := 0; a <= 10; a++ {
		fmt.Println(a)
	}
}

# 遍历

package main
import "fmt"
func main() {
	var arr = []int8{1, 2, 3, 4}
	for _, value := range arr {
		fmt.Println(value)
	}
}

go 中 for 遍历数组 (或其他容器数据), 格式如下: for index,value := range oldMap { code }
索引或值不需要可以用 _ 代替。

# 类型转换

使用类名 +() 即可,例如 string(var1)