Go 语言的进阶 | 青训营笔记

47 阅读2分钟

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)
}