合理的使用各种结构,会极大地提升代码的可读性和灵活性。
一、if-else 选择结构
GO语言的if-else 写法类似于C和C++,但是有不同:
不同点1:if后面没有括号,如果你写括号的话,那么在保存时你的编译器会自动帮你去掉。
不同点2:GO语言的if,它后面必须接大括号,简而言之就是不能像C和C++一样把if里的语句写成一行。
package main
import "fmt"
func main() {
if 7%2 == 0 {
fmt.Println("7 is even")
} else {
fmt.Println("7 is odd")
}
if 8%4 == 0 {
fmt.Println("8 is divisible by 4")
}
if num := 9; num < 0 {
fmt.Println(num, "is negative")
} else if num < 10 {
fmt.Println(num, "has 1 digit")
} else {
fmt.Println(num, "has multiple digits")
}
}
- 1. if语句只需要一个条件表达式,如果条件为真,将执行if语句块中的代码。
if condition {
// 条件为真时执行的代码
}
- 2. 如果需要在条件为假时执行一段代码,可以使用if-else语句。
if condition {
// 条件为真时执行的代码
} else {
// 条件为假时执行的代码
}
- 3. 当有多个条件需要判断时,可以使用if-else if-else链。
if condition1 {
// 条件1为真时执行的代码
} else if condition2 {
// 条件2为真时执行的代码
} else {
// 所有条件都为假时执行的代码
}
- 4. 特殊情况下,可以在if语句之前添加一个简单的语句,用于初始化局部变量。这些变量的作用域仅局限于if语句块中。
if initialization; condition {
// 初始化操作
// 如果条件为真,执行的代码
}
- 5. 在Go语言中,条件表达式的结果必须是一个布尔值(true或false)。
- 6. 在if语句中可以使用逻辑运算符(&&、||、!)来组合和取反条件。
- 7. 可以使用比较运算符(==、!=、<、>、<=、>=)进行条件比较。
- 8. if-else结构可以嵌套使用,但要注意保持正确的代码缩进,以提高可读性。
二、循环结构
循环结构用于重复执行一段代码块,直到满足特定条件为止。通过合理使用循环结构,您可以实现重复执行代码的逻辑,并在满足特定条件时终止循环。
在Go语言中,常用的循环结构有for循环和range循环:
package main
import "fmt"
func main() {
i := 1
for {
fmt.Println("loop")
break
}
for j := 7; j < 9; j++ {
fmt.Println(j)
}
for n := 0; n < 5; n++ {
if n%2 == 0 {
continue
}
fmt.Println(n)
}
for i <= 3 {
fmt.Println(i)
i = i + 1
}
}
1. for循环:for循环是最基本的循环结构,在每次循环迭代时都会检查条件。它的形式如下:
for 初始语句; 条件表达式; 后续语句 {
// 循环体代码块
}
其中:
-
初始语句:用于初始化循环变量。
-
条件表达式:在每次循环迭代开始前进行判断,如果为真,则执行循环体;如果为假,则跳出循环。
-
后续语句:在每次循环迭代结束后执行,通常用于更新循环变量的值。
-
eg:
for i := 0; i < 5; i++ {
// 执行循环体代码块,重复5次
}
2. range循环:range循环用于遍历数组、切片、映射或通道中的元素。它的形式如下:
for 索引, 值 := range 集合 {
// 循环体代码块
}
其中:
- 索引:可选参数,表示元素在集合中的索引或键。
- 值:表示集合中的元素值。
eg:
numbers := []int{1, 2, 3, 4, 5}
for index, value := range numbers {
// 处理索引和值
}
三、SWITCH分支结构
让我们先看一个读取当前时间的代码:
package main
import (
"fmt"
"time"
)
func main() {
a := 2
switch a {
case 1:
fmt.Println("one")
case 2:
fmt.Println("two")
case 3:
fmt.Println("three")
case 4, 5:
fmt.Println("four or five")
default:
fmt.Println("other")
}
t := time.Now()
switch {
case t.Hour() < 12:
fmt.Println("It's before noon")
default:
fmt.Println("It's after noon")
}
}
当需要根据不同的条件执行不同的代码块时,可以使用Go语言中的switch结构switch结构提供了一种更简洁和易读的方法来实现多分支条件判断。
switch语法结构:
switch 表达式 {
case 值1:
// 表达式等于值1时执行的代码
case 值2:
// 表达式等于值2时执行的代码
...
default:
// 所有 case 都不匹配时执行的代码
}