编写结构化程序for、if、switch - Go语言从入门到实战
for 循环
与其他主要编程语⾔的差异:
Go 语⾔仅⽀持循环关键字 for,而且代码更简洁性和灵活性。
一般的 for 循环结构如下:
for 初始化; 条件; 后续操作 { // 循环体
}
Go语言在循环体中可以省略掉初始化和后续操作的部分:
for 条件 { // 循环体
}
代码示例:
//while 条件循环
//while (n<5)
n := 0
for n < 5 {n++fmt.Println(n)
}
//
//⽆限循环
//while (true)
n := 0
for {//…
}
而且,Go 语言的 for 循环还可以在循环体内修改条件变量,这可以实现一些其他语言无法轻易实现的功能。例如,下面的代码用 Go 语言写出来非常简单:
//计算 1 到 10(包括 10)之间所有奇数的和。
sum := 0
for i := 0; i < 10; i++ { if i % 2 == 0 { continue } sum += i
}
if 条件
与其他主要编程语⾔的差异
- condition 表达式结果必须为布尔值,如:x > 0
- ⽀持变量声明和赋值declaration,如:x := 5;
if var declaration; condition {// code to be executed if condition is true
}
//
if x := 5; x > 0 { // code to be executed if x is greater than 0
}
switch 条件
与其他主要编程语⾔的差异
- 条件表达式不限制为常量或者整数,可以使用变量、表达式甚至函数调用作为条件;
- 单个 case 中,可以出现多个结果选项, 使⽤逗号分隔;
- 与 C 语⾔等语言规则相反,Go 语⾔不需要⽤break来明确退出⼀个 case,当一个 case 的条件满足时,控制流会自动转到该 case 代码块中的代码;
- 可以不设定 switch 之后的case条件表达式,在此种情况下,整个 switch 结
构与多个 if…else… 的逻辑作⽤等同。
//差异1,代码示例
value := 5
switch value % 2 == 0 {
case true: fmt.Println("Even")
case false: fmt.Println("Odd")
}
//差异2,代码示例
switch num {
case 1, 3, 5: fmt.Println("Odd")
case 2, 4, 6: fmt.Println("Even")
}
//差异3,代码示例
switch (num) {
case 1: //break 可以不用break
case 2: //break
default: //
}
//差异4,代码示例
switch { case 0 <= Num && Num <= 3: //case表达式fmt.Printf("0-3") case 4 <= Num && Num <= 6: fmt.Printf("4-6") case 7 <= Num && Num <= 9: fmt.Printf("7-9")
}
通过已上知识,已经对Go语言的for、if、switch有些了解,现在通过包含for、if、switch的代码段来强化下记忆:
package main import "fmt" // 判断一个数是否为素数
func isPrime(num int) bool { if num <= 1 { return false } for i := 2; i*i <= num; i++ { if num%i == 0 { return false } } return true
} func main() { // 声明变量 var num int var result string // 获取用户输入 fmt.Print("请输入一个正整数:") fmt.Scanln(&num) // 判断输入的数字是否为素数 if isPrime(num) { result = "素数" } else { result = "非素数" } // 根据结果输出不同的信息 switch result { case "素数": fmt.Printf("%d是%s。\n", num, result) case "非素数": fmt.Printf("%d是%s。\n", num, result) default: fmt.Println("未知结果") }
}
首先使用条件语句if判断输入的数字是否为素数,并将结果存储在变量result中。
然后,使用switch语句根据变量result的值输出不同的信息。
在switch语句中,每个case分支对应一个可能的值,执行相应的输出。
如果没有匹配的case分支,可以使用default分支来处理未知结果。
学习Go语言主要是多练,多找些代码段写写,不懂可以私聊咨询。
欢迎关注云尔Websites CSDN博客
欢迎进入Golang交流社区