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


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

    for 循环

    与其他主要编程语⾔的差异:
    Go 语⾔仅⽀持循环关键字 for,而且代码更简洁性和灵活性。
    一般的 for 循环结构如下:

    for 初始化; 条件; 后续操作 {  
        // 循环体  
    }
    
    • 1
    • 2
    • 3

    Go语言在循环体中可以省略掉初始化和后续操作的部分:

    for 条件 {  
        // 循环体  
    }
    代码示例:
    //while 条件循环 
    //while (n<5)
    n := 0
    for n < 5 {
     	n++
     	fmt.Println(n)
    }
    //
    //⽆限循环
    //while (true)
    n := 0
    for {
    	//…
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    而且,Go 语言的 for 循环还可以在循环体内修改条件变量,这可以实现一些其他语言无法轻易实现的功能。例如,下面的代码用 Go 语言写出来非常简单:

    //计算 1 到 10(包括 10)之间所有奇数的和。
    sum := 0  
    for i := 0; i < 10; i++ {  
        if i % 2 == 0 {  
            continue  
        }  
        sum += i  
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    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  
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    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")
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34

    通过已上知识,已经对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("未知结果")  
        }  
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43

    首先使用条件语句if判断输入的数字是否为素数,并将结果存储在变量result中。
    然后,使用switch语句根据变量result的值输出不同的信息。
    在switch语句中,每个case分支对应一个可能的值,执行相应的输出。
    如果没有匹配的case分支,可以使用default分支来处理未知结果。


    学习Go语言主要是多练,多找些代码段写写,不懂可以私聊咨询。

    欢迎关注云尔Websites CSDN博客

    欢迎进入Golang交流社区

  • 相关阅读:
    如何通过函数获取股票量化交易行情数据?
    [NOI2017] 整数,蚯蚓排队,泳池
    如何在 vue3 中使用 jsx/tsx?
    Leetcode232.用栈实现队列
    C#when关键字
    http在安卓9.0以上版本无法获取数据问题(备忘)
    【红包雨压测环境】
    redis 核心数据结构
    Electron实战之入门
    蓝海创意云接受【看苏州】独家专访:助力苏州数字文化行业全方位发展
  • 原文地址:https://blog.csdn.net/wuchengzeng/article/details/133390637