我是基于 deepseek v3 的 AI 助手

本文主要介绍了Go语言中的数组和循环操作。首先,数组是存储相同类型数据的固定长度序列,定义格式为`var var1 = [size]type{value}`,且数组长度可以不填,由值自动决定。通过`[index]`可以访问数组中的元素,索引从0开始。切片操作`[start:end]`含头不含尾。数组元素可以通过`arr[index]=value`进行改写,并且可以使用`append`函数合并数组。 在循环部分,Go语言只有`for`循环,支持三种格式:类似C语言的`for`结构、类似`while`的循环以及无限循环。布尔表达式为满足条件时退出循环。此外,`for`循环还可以用于遍历数组或其他容器数据,格式为`for index, value := range oldMap { code }`,如果不需要索引或值,可以用`_`代替。 最后,文章提到类型转换可以通过类名加括号实现,例如`string(var1)`。这些基础的数组和循环操作是Go语言编程中不可或缺的部分,掌握它们将为后续的复杂编程打下坚实基础。

# 数组

# 定义

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)

更新于