Go 语言的进阶
1. 流程控制
1.1 if
if 语句的条件里不需要括号,但是需要加上花括号。
if x > 10 {
fmt.Println("x is greater than 10")
} else {
fmt.Println("x is less than 10")
}
1.2 switch
switch 语句会自动 break,除非使用 fallthrough 语句。
switch x {
case 1:
fmt.Println("x is equal to 1")
case 2:
fmt.Println("x is equal to 2")
default:
fmt.Println("x is equal to other value")
}
1.3 for
for 循环的条件里不需要括号,但是需要加上花括号。
for i := 0; i < 10; i++ {
fmt.Println(i)
}
1.4 goto
func main() {
i := 0
Here:
fmt.Println(i)
i++
if i < 10 {
goto Here
}
}
1.5 break
break 可以用于 for、switch、select 的语句块中,用于跳出语句块。
func main() {
for i := 0; i < 10; i++ {
fmt.Println(i)
if i > 5 {
break
}
}
}
1.6 continue
continue 可以用于 for 的语句块中,用于跳过当前循环。
func main() {
for i := 0; i < 10; i++ {
if i < 5 {
continue
}
fmt.Println(i)
}
}
1.7 return
return 用于函数中,用于跳出函数。
func main() {
for i := 0; i < 10; i++ {
if i < 5 {
return
}
fmt.Println(i)
}
}
2. 数组
2.1 数组的定义
数组的长度是数组类型的一部分,因此数组不能改变大小。
var arr1 [5]int
arr2 := [3]int{1, 3, 5}
arr3 := [...]int{2, 4, 6, 8, 10}
var grid [4][5]int
2.2 数组的遍历
func main() {
arr := [...]int{1, 3, 5, 7, 9}
for i := 0; i < len(arr); i++ {
fmt.Println(arr[i])
}
for i := range arr {
fmt.Println(arr[i])
}
for i, v := range arr {
fmt.Println(i, v)
}
for _, v := range arr {
fmt.Println(v)
}
}
2.3 数组的截取
数据的截取是一个左闭右开的区间。
func main() {
arr := [...]int{1, 3, 5, 7, 9}
fmt.Println(arr[2:4])
fmt.Println(arr[:4])
fmt.Println(arr[2:])
fmt.Println(arr[:])
}
2.4 数组的比较
数组的比较是值的比较,只有当两个数组的所有元素都是相等的时候,数组才是相等的。
func main() {
arr1 := [...]int{1, 3, 5, 7, 9}
arr2 := [...]int{1, 3, 5, 7, 9}
arr3 := [...]int{1, 3, 5, 7, 10}
fmt.Println(arr1 == arr2)
fmt.Println(arr1 == arr3)
}
2.5 数组的赋值
数组的赋值是值的赋值,因此改变一个数组的值,不会影响另一个数组的值。
func main() {
arr1 := [...]int{1, 3, 5, 7, 9}
arr2 := arr1
arr2[0] = 0
fmt.Println(arr1)
fmt.Println(arr2)
}
2.6 数组的指针
func main() {
arr1 := [...]int{1, 3, 5, 7, 9}
arr2 := &arr1
arr2[0] = 0
fmt.Println(arr1)
fmt.Println(arr2)
}