编写结构化程序 - Go语言从入门到实战

编写结构化程序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 条件

与其他主要编程语⾔的差异

  1. condition 表达式结果必须为布尔值,如:x > 0
  2. ⽀持变量声明和赋值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 条件

与其他主要编程语⾔的差异

  1. 条件表达式不限制为常量或者整数,可以使用变量、表达式甚至函数调用作为条件;
  2. 单个 case 中,可以出现多个结果选项, 使⽤逗号分隔;
  3. 与 C 语⾔等语言规则相反,Go 语⾔不需要⽤break来明确退出⼀个 case,当一个 case 的条件满足时,控制流会自动转到该 case 代码块中的代码;
  4. 可以不设定 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交流社区

你可能感兴趣的:(GO语言从入门到实战,golang,开发语言,后端)