控制流
在 Go 中,通过条件语句(if、else、switch)和循环结构(for)来进行流控制。
If/Else
if
语句用于条件性执行代码。
package main
import "fmt"
func main() {
x := 10
if x > 5 {
fmt.Println("x is greater than 5")
} else {
fmt.Println("x is not greater than 5")
}
}
Switch
switch
语句用于根据表达式的值从多个分支中选择执行。
package main
import "fmt"
func main() {
day := "Monday"
switch day {
case "Monday":
fmt.Println("It's Monday.")
case "Tuesday":
fmt.Println("It's Tuesday.")
default:
fmt.Println("It's some other day.")
}
}
For
Go 中有一个既支持传统循环,又支持区间迭代的 for
循环。
package main
import "fmt"
func main() {
// 传统 for 循环
for i := 0; i < 5; i++ {
fmt.Println(i)
}
// 基于区间范围的 for 循环
numbers := []int{1, 2, 3, 4, 5}
for index, value := range numbers {
fmt.Printf("Index: %d, Value: %d\n", index, value)
}
}
Range
range
用于迭代各种可迭代数据结构中的元素。
package main
import "fmt"
func main() {
nums := []int{2, 3, 4}
sum := 0
for _, num := range nums {
sum += num
}
fmt.Println("sum:", sum)
kvs := map[string]string{"l": "lite", "r": "rank"}
for k, v := range kvs {
fmt.Printf("%s -> %s\n", k, v)
}
for k := range kvs {
fmt.Println("key:", k)
}
for i, c := range "lite" {
fmt.Println(i, c)
}
}
输出结果:
sum: 9
l -> lite
r -> rank
key: l
key: r
0 108
1 105
2 116
3 101
Defer 延迟
defer
语句用于确保在程序的执行过程中延迟执行函数调用,通常用于资源清理。
package main
import "fmt"
func main() {
defer fmt.Println("This will be executed last.")
fmt.Println("This will be executed first.")
// => This will be executed first.
// => This will be executed last.
}
代码挑战
实现一个名为
findMax
的函数,该函数接受一个整数切片作为输入,并返回最大值及其索引。
Loading...
> 此处输出代码运行结果