Go语言学习
循环
Go语言仅支持循环关键字for
条件循环一
for (j := 0; j < 10; j++) {
fmt.Println(n)
}
条件循环二
n := 0
for n < 10 {
n++
fmt.Println(n)
}
无限循环
for {
//需要无限循环的代码
}
if条件
go语言支持多返回值,v,err为自定义函数someFun()的两个返回值。在;前得到someFun的返回值,在;后可以直接使用
if v,err := someFun(); err==nil {
//err为空的操作
} else {
//报错执行的操作
}
switch条件
go语言中switch的case中支持多个项
for i:=0; i < 5; i++ {
switch i{
case 0,2:
t.Log("Even")
case 1,3:
t.Log("Odd")
default:
t.Log("else")
}
}
swich的case也可以代替复杂的if else。
go语言自带每个case中默认会带有break,所以break不用写
func TestSwitchCase(t *testing.T) {
for i := 0; i < 5; i++ {
switch {
case i < 3:
t.Logf("%d 小于 3", i)
case i < 5:
t.Logf("%d 大于2小于5", i)
}
}
}
数组
数组的声明
var a [3]int //声明数组后,数组内默认会是零值
a[0] = 1
b := [3]int{1,2,3} //声明同时初始化
c := [...]int{1,2,3,4}
d := [2][2]int{1,2},{3,4} //多维数组初始化
数组的遍历
arr := [...]int{1,2,3,4}
for i := 0; i < len(arr); i++ {
t.Log(arr[i])
}
for idx,elem := range arr {
fmt.Println(idx, elem)
}
数组的快速截取
a := [...]int{1,2,3,4,5}
a[1:2] //2
a[1:3] //2,3
a[1:len(a)] //2,3,4,5
a[1:] //2,3,4,5
a[:3] //1,2,3
切片
切片是共享的存储结构,与数组的区别,没有三个点
//第一个参数:长度
//第二个参数:容量
func TestSliceInit(t *testing.T) {
//数组的区别,没有三个点
var s0 []int
t.Log(len(s0),cap(s0)
s0 = append(s0, 1)
t.Log(len(s0), cap(s0))
}