# 数组
# 定义
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)