if-else语句
package main
import "fmt"
func main() {
// 检查 7 是否能被 2 整除
if 7%2 == 0 {
fmt.Println("7 is even") // 如果条件为真,打印 "7 is even"
} else {
fmt.Println("7 is odd") // 否则,打印 "7 is odd"
}
// 检查 8 是否能被 4 整除
if 8%4 == 0 {
fmt.Println("8 is divisible by 4") // 如果条件为真,打印 "8 is divisible by 4"
}
// 声明并初始化变量 num 为 9,然后检查 num 是否小于 0
if num := 9; num < 0 {
fmt.Println(num, "is negative") // 如果条件为真,打印 num 是负数
} else if num < 10 {
fmt.Println(num, "has 1 digit") // 否则,如果 num 小于 10,打印 num 是一位数
} else {
fmt.Println(num, "has multiple digits") // 否则,打印 num 是多位数
}
}
Go 语言里面的 if-else 写法和 C 或者 C++ 类似。不同点如下:
- 没有括号:
- 在 Go 语言中,
if后面没有括号。如果你写括号的话,那么在保存的时候你的编辑器会自动把你去掉。
- 在 Go 语言中,
- 大括号必须存在:
- Go 语言里面的
if,它必须后面接大括号,就是你不能像 C 或者 C++ 一样,直接把if里面的语句同一行。
- Go 语言里面的
- 初始化语句:
- Go 语言的
if语句可以包含一个初始化语句,初始化语句和条件表达式之间用分号分隔。例如:if num := 9; num < 0。
- Go 语言的
switch 分支结构
Go 语言中的 switch 语句用于执行多分支选择操作。与 C 或 C++ 类似,switch 语句根据表达式的值选择执行的代码块。然而,Go 语言中的 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")
}
}
- 基本结构
switch语句后面跟一个表达式(如变量a,根据表达式的值选择执行相应的case代码块。- 每个
case语句后面跟一个值或多个值(用逗号分隔),如果表达式的值与case的值匹配,则执行该case代码块。 default语句是可选的,当没有匹配的case时执行default代码块。
- 无需显式
break- 在 C 或 C++ 中,
switch语句中的每个case代码块通常需要以break语句结束,以防止执行后续的case代码块。 - 在 Go 语言中,每个
case代码块默认会自动终止,不需要显式的break语句。
- 在 C 或 C++ 中,
- 多值
case- Go 语言允许在一个
case语句中指定多个值,如case 4, 5:,当表达式的值为 4 或 5 时,执行相应的代码块。
- Go 语言允许在一个
- 无表达式的
switch- Go 语言中的
switch语句可以不带表达式,此时每个case语句可以包含一个布尔表达式。 - 这种用法可以替代多个
if-else语句,使代码逻辑更加清晰。
- Go 语言中的
数组
package main
import "fmt"
func main() {
var a [5]int
a[4] = 100
fmt.Println("get:", a[2])
fmt.Println("len:", len(a))
b := [5]int{1, 2, 3, 4, 5}
fmt.Println(b)
var twoD [2][3]int
for i := 0; i < 2; i++ {
for j := 0; j < 3; j++ {
twoD[i][j] = i + j
}
}
fmt.Println("2d: ", twoD)
}
- 数组声明和初始化
- 在 Go 语言中,数组是具有固定长度且元素类型相同的集合。
- 通过
var a [5]int声明一个长度为 5 的整型数组a。数组的默认值是元素类型的零值,对于整型数组来说,默认值是 0。
- 数组元素赋值
- 使用索引访问和赋值数组元素,例如
a[4] = 100将数组a的第五个元素(索引从 0 开始)赋值为 100。
- 使用索引访问和赋值数组元素,例如
- 数组元素访问
- 通过索引访问数组元素,例如
a[2]获取数组a的第三个元素。 - 使用
fmt.Println("get:", a[2])打印数组a的第三个元素。
- 通过索引访问数组元素,例如
- 数组长度
- 使用内置函数
len获取数组的长度
- 使用内置函数
- 数组初始化
- 可以在声明数组的同时进行初始化,例如
b := [5]int{1, 2, 3, 4, 5}声明并初始化一个长度为 5 的整型数组b。
- 可以在声明数组的同时进行初始化,例如
- 多维数组
- Go 语言支持多维数组,例如
var twoD [2][3]int声明一个 2x3 的二维整型数组twoD。
- Go 语言支持多维数组,例如