if/else语句是golang中最基本的控制流程之一。它的语法如下:
if condition {
// do something
} else {
// do something else
}
其中,condition是一个布尔表达式,如果它的值为true,则执行if语句后面的代码块;否则,执行else语句后面的代码块。
下面是一个简单的例子,它根据用户输入的数字判断它是奇数还是偶数:
package main
import (
"fmt"
)
func main() {
var num int
fmt.Print("Enter a number: ")
fmt.Scanln(&num)
if num%2 == 0 {
fmt.Println(num, "is even")
} else {
fmt.Println(num, "is odd")
}
}
在这个例子中,我们使用了if/else语句来判断num是否为偶数。如果是,我们输出"num is even";否则,输出"num is odd"。
package main
import "fmt"
func main() {
num := 10
if num%2 == 0 {
fmt.Println(num, "is even")
} else {
fmt.Println(num, "is odd")
}
}
注释:
第3行:定义一个整型变量num,并赋值为10。
第4行:使用if语句判断num是否为偶数,如果是,则输出"num is
even";否则,输出"num is odd"。
package main
import "fmt"
func main() {
num1 := 10
num2 := 20
if num1 > 0 {
if num2 > 0 {
fmt.Println("Both numbers are positive")
} else {
fmt.Println("num2 is negative")
}
} else {
fmt.Println("num1 is negative")
}
}
注释:
第3、4行:定义两个整型变量num1和num2,并分别赋值为10和20。
第6行:使用嵌套的if语句判断num1和num2是否都为正数,如果是,则输出"Both numbers are
positive";否则,根据num2是否为负数输出"num2 is negative"或者"num1 is negative"。
package main
import "fmt"
func main() {
num := 75
if num >= 90 {
fmt.Println("A")
} else if num >= 80 {
fmt.Println("B")
} else if num >= 70 {
fmt.Println("C")
} else if num >= 60 {
fmt.Println("D")
} else {
fmt.Println("F")
}
}
注释:
第3行:定义一个整型变量num,并赋值为75。
第5-10行:使用if/else if结构判断num所属的成绩等级,并输出相应的字母等级。
package main
import "fmt"
func main() {
num := 10
if num > 0 && num < 100 {
fmt.Println("num is between 0 and 100")
}
}
注释:
第3行:定义一个整型变量num,并赋值为10。 第5行:使用if语句判断num是否在0和100之间,如果是,则输出"num isbetween 0 and 100"。
第5行中的"&&"表示逻辑与运算符,如果前面的条件为false,则后面的条件不会被执行,这就是if语句中的短路现象。
package main
import "fmt"
func main() {
num1 := 10
num2 := 20
if num1 > 0 && num2 > 0 {
fmt.Println("Both numbers are positive")
} else if num1 < 0 || num2 < 0 {
fmt.Println("At least one number is negative")
}
}
注释:
第3、4行:定义两个整型变量num1和num2,并分别赋值为10和20。
第6行:使用if语句判断num1和num2是否都为正数,如果是,则输出"Both numbers are positive"。
第7行:如果num1和num2中至少有一个为负数,则输出"At least one number is negative"。
第7行中的"||"表示逻辑或运算符,如果前面的条件为true,则后面的条件不会被执行,这也是if语句中的短路现象。
switch语句是golang中另一个常用的控制流程。它的语法如下:
switch expression {
case value1:
// do something
case value2:
// do something else
default:
// do something if none of the above cases match
}
其中,expression是一个表达式,它的值将与每个case后面的值进行比较。如果它们相等,则执行相应的代码块。如果没有任何一个case与expression的值匹配,则执行default语句后面的代码块。
下面是一个例子,它根据用户输入的数字输出相应的星期几:
package main
import (
"fmt"
)
func main() {
var day int
fmt.Print("Enter a number between 1 and 7: ")
fmt.Scanln(&day)
switch day {
case 1:
fmt.Println("Monday")
case 2:
fmt.Println("Tuesday")
case 3:
fmt.Println("Wednesday")
case 4:
fmt.Println("Thursday")
case 5:
fmt.Println("Friday")
case 6:
fmt.Println("Saturday")
case 7:
fmt.Println("Sunday")
default:
fmt.Println("Invalid input")
}
}
在这个例子中,我们使用了switch语句来根据用户输入的数字输出相应的星期几。如果用户输入的数字不在1到7之间,我们输出"Invalid input"。
for循环是golang中最常用的控制流程之一。它的语法如下:
for initialization; condition; post {
// do something
}
其中,initialization是一个语句,用于初始化循环变量;condition是一个布尔表达式,它的值用于判断循环是否继续执行;post是一个语句,用于更新循环变量的值。
下面是一个例子,它使用for循环来计算1到10的和:
package main
import (
"fmt"
)
func main() {
sum := 0
for i := 1; i <= 10; i++ {
sum += i
}
fmt.Println("Sum of 1 to 10 is", sum)
}
在这个例子中,我们使用了for循环来计算1到10的和。我们使用i作为循环变量,从1到10遍历所有数字,并将它们相加。
下面是golang中各种循环结构的案例代码,并附带注释:
package main
import "fmt"
func main() {
for i := 0; i < 5; i++ {
fmt.Println(i)
}
}
注释:
第3行:使用for循环,循环变量i的初始值为0,循环条件为i小于5,循环体中每次输出i的值。
第4行:循环变量i每次自增1,直到i等于5时,循环结束。
package main
import "fmt"
func main() {
i := 0
for i < 5 {
fmt.Println(i)
i++
}
}
注释:
第3行:定义一个整型变量i,并赋值为0。
第4行:使用for循环,循环条件为i小于5,循环体中每次输出i的值。
第5行:循环变量i每次自增1,直到i等于5时,循环结束。
package main
import "fmt"
func main() {
// range后可以跟 数组 字符串 切片 管道
numbers := []int{1, 2, 3, 4, 5}
for index, value := range numbers {
fmt.Println("Index:", index, "Value:", value)
}
}
注释:
第3行:定义一个整型切片numbers,并初始化为{1, 2, 3, 4, 5}。
第4行:使用range循环,循环变量index表示当前元素的索引,变量value表示当前元素的值。
第5行:循环体中输出当前元素的索引和值。
package main
import "fmt"
func main() {
for i := 0; i < 5; i++ {
if i == 3 {
break
}
fmt.Println(i)
}
}
注释:
第3行:使用for循环,循环变量i的初始值为0,循环条件为i小于5,循环体中每次输出i的值。
第4-6行:使用if语句判断i是否等于3,如果是,则使用break语句跳出循环。
第7行:循环体中每次输出i的值,但在i等于3时,循环被break语句跳出,因此不会输出3及之后的数字。
package main
import "fmt"
func main() {
for i := 0; i < 5; i++ {
if i == 3 {
continue
}
fmt.Println(i)
}
}
注释:
第3行:使用for循环,循环变量i的初始值为0,循环条件为i小于5,循环体中每次输出i的值。
第4-6行:使用if语句判断i是否等于3,如果是,则使用continue语句跳过本次循环。
第7行:循环体中每次输出i的值,但在i等于3时,continue语句跳过了本次循环,因此不会输出3,但会继续执行后续的循环。
goto语句是golang中最不常用的控制流程之一。它的语法如下:
goto label
...
label: statement
其中,label是一个标识符,它用于标记一个语句;statement是一个语句,它将在goto语句跳转到label时执行。
下面是一个例子,它使用goto语句来跳转到标记为"end"的语句:
package main
import (
"fmt"
)
func main() {
i := 0
loop:
if i < 10 {
fmt.Println(i)
i++
goto loop
}
end:
fmt.Println("End of program")
}
在这个例子中,我们使用了goto语句来跳转到标记为"end"的语句。我们使用一个标记为"loop"的语句来实现一个简单的循环,打印出数字0到9。
总结:
在本文中,我们讲解了golang中的if/else、switch、for循环和goto语句,并提供了相应的代码和注释。这些控制流程是golang中最基本和最常用的控制流程,掌握它们对于编写高质量的golang代码非常重要。