Go语言流程控制语句

Go语言流程控制语句

在Go语言中,流程控制是任何编程语言中都不可避免的一部分。Go语言提供了几种流程控制语句,包括if语句、for循环、switch语句、break语句、continue语句和goto语句。本文将详细介绍这些语句及其使用场景。

if语句

if语句是Go语言中最基本也是最常用的流程控制语句之一,它用于根据一个条件判断来决定是否执行某段代码。if语句支持以下形式:

if 条件1 {
    //条件1成立时执行的代码
}else if 条件2 {
    //条件2成立时执行的代码
}else{
    //所有条件都不成立时执行的代码
}

示例1:判断一个数是否是偶数。

package main

import "fmt"

func main() {
    var num int
    fmt.Print("请输入一个整数: ")
    fmt.Scan(&num)
    if num%2 == 0 {
        fmt.Printf("%d是一个偶数", num)
    } else {
        fmt.Printf("%d是一个奇数", num)
    }
}

示例2:根据成绩等级计算学生的评价。

package main

import "fmt"

func main() {
    var grade int
    fmt.Print("请输入学生的成绩: ")
    fmt.Scan(&grade)
    if grade >= 90 {
        fmt.Println("优秀")
    } else if grade >= 80 {
        fmt.Println("良好")
    } else if grade >= 70 {
        fmt.Println("中等")
    } else if grade >= 60 {
        fmt.Println("及格")
    } else {
        fmt.Println("不及格")
    }
}

for循环

for循环是用于重复执行一段代码的流程控制语句。它支持三种形式:for循环、while循环和do...while循环。这三种形式可以互相转换。

for循环

for循环是Go语言中最常用的循环结构,它支持以下形式:

for 初始语句;条件表达式;结束语句{
    //循环体
}

说人话就是:初始语句用于初始化循环参数,条件表达式用于判断是否继续循环,结束语句用于更新循环参数。

示例1:计算1到10的和。

package main

import "fmt"

func main() {
    sum := 0
    for i := 1; i <= 10; i++ {
        sum += i
    }
    fmt.Println("1+2+...+10 =", sum)
}

示例2:打印99乘法表。

package main

import "fmt"

func main() {
    for i := 1; i <= 9; i++ {
        for j := 1; j <= i; j++ {
            fmt.Printf("%d*%d=%d\t", j, i, i*j)
        }
        fmt.Println()
    }
}

while循环

while循环在Go语言中不是关键字,但可以用for语句来实现。while循环的形式如下:

for 条件表达式{
    //循环体
}

示例:

package main

import "fmt"

func main() {
    i := 1
    for i <= 10 {
        fmt.Println(i)
        i++
    }
}

do...while循环

do...while循环在Go语言中也不是关键字,但可以使用for语句来实现。do...while循环的形式如下:

for {
    //循环体
    if !条件表达式 {
        break
    }
}

示例:从标准输入中输入整数,直到输入0为止。

package main

import "fmt"

func main() {
    for {
        var num int
        fmt.Print("请输入一个整数(0退出): ")
        fmt.Scan(&num)
        if num == 0 {
            break
        } else {
            fmt.Println(num)
        }
    }
}

switch语句

switch语句是用于根据一个值选择多条代码中的一条执行的流程控制语句。它支持以下形式:

switch 表达式 {
case 值1:
    //条件1成立时执行的代码
case 值2:
    //条件2成立时执行的代码
default:
    //所有条件都不成立时执行的代码
}

示例1:判断一个学生成绩的等级。

package main

import "fmt"

func main() {
    var grade int
    fmt.Print("请输入学生的成绩: ")
    fmt.Scan(&grade)
    switch grade / 10 {
    case 10, 9:
        fmt.Println("优秀")
    case 8, 7:
        fmt.Println("良好")
    case 6:
        fmt.Println("及格")
    default:
        fmt.Println("不及格")
    }
}

示例2:根据运算符计算两个数的结果。

package main

import "fmt"

func main() {
    var num1, num2 float64
    var operator string
    fmt.Print("请输入第一个数: ")
    fmt.Scan(&num1)
    fmt.Print("请输入第二个数: ")
    fmt.Scan(&num2)
    fmt.Print("请输入运算符(+,-,*,/): ")
    fmt.Scan(&operator)
    switch operator {
    case "+":
        fmt.Println(num1+num2)
    case "-":
        fmt.Println(num1-num2)
    case "*":
        fmt.Println(num1*num2)
    case "/":
        fmt.Println(num1/num2)
    default:
        fmt.Println("输入的运算符不合法")
    }
}

break语句

break语句用于跳出循环。在for循环、switch语句和select语句中都可以使用break语句。

示例:计算1到100之间所有偶数的和。

package main

import "fmt"

func main() {
    sum := 0
    for i := 1; i <= 100; i++ {
        if i%2 == 1 {
            continue
        }
        sum += i
    }
    fmt.Println("1到100之间所有偶数的和为:", sum)
}

continue语句

continue语句用于跳过本次循环的剩余部分,继续执行下一次循环。在for循环中使用此语句可以跳过某次处理,但是继续执行循环。

示例:输出所有奇数。

package main

import "fmt"

func main() {
    for i := 1; i <= 10; i++ {
        if i%2 == 0 {
            continue
        }
        fmt.Println(i)
    }
}

goto语句

goto语句在Go语言中被认为是一种不良方式,因为它会导致程序的逻辑跳转变得难以理解,不利于代码的阅读和维护。因此,除非在特殊情况下,一般情况下不应该使用它。它的形式如下:

LABEL:
    //代码
    goto LABEL

示例:使用goto语句打印1到100之间的奇数。

package main

import "fmt"

func main() {
    i := 1
LOOP:
    if i > 100 {
        return
    }
    if i%2 == 0 {
        goto SKIP
    }
    fmt.Println(i)
SKIP:
    i++
    goto LOOP
}

总结

本文通过对Go语言流程控制语句的详细讲解,使读者对它们的特点、用法和常见场景有了更深入的了解。在实际项目开发中,流程控制是不可或缺的一部分,合理运用它们可以有效提高代码的效率和质量。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Go语言流程控制语句 - Python技术站

(0)
上一篇 2023年6月7日
下一篇 2023年6月7日

相关文章

  • C#用websocket实现简易聊天功能(客户端)

    下面是C#用websocket实现简易聊天功能(客户端)的完整攻略。 1. 准备工作 在开始实现聊天功能之前,你需要先准备好以下几件事情: 安装websocket库:你可以通过在Visual Studio中打开NuGet包管理器,然后搜索websocket来安装websocket库。 了解websocket连接的基本知识:websocket是一种基于TCP协…

    C# 2023年5月15日
    00
  • ASP.NET Core – 缓存之内存缓存(上)

    1. 缓存 缓存指的是在软件应用运行过程中,将一些数据生成副本直接进行存取,而不是从原始源(数据库,业务逻辑计算等)读取数据,减少生成内容所需的工作,从而显著提高应用的性能和可伸缩性,使用好缓存技术,有利于提高我们提升用户体验性。 对于缓存的使用有以下一些注意点: 缓存最适用于不常更改且生成成本很高的数据。 代码应始终具有回退选项,以提取数据,而不依赖于可用…

    C# 2023年4月18日
    00
  • .net任务调度框架Hangfire简介

    .NET任务调度框架Hangfire简介 Hangfire是一个.NET任务调度框架,它可以帮助我们在.NET应用程序中轻松地执行后台任务。Hangfire提供了一个简单的API,可以让我们创建和管理后台任务,例如发送电子邮件、生成报告、处理队列等。Hangfire还提供了一个可视化仪表板,可以让我们轻松地监视和管理后台任务。 安装Hangfire 我们可以…

    C# 2023年5月17日
    00
  • 在.NET7中使用MQTTnet简单实现MQTT通信

    一、MQTT简介 MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息传输协议,主要用于物联网设备间的通信。MQTT协议采用客户端/服务器架构,支持发布/订阅模式和点对点模式,具有高效、可靠、灵活等优点。 MQTT协议主要由三个要素构成:发布者(publisher)、代理服务器(broker)和订阅者(subs…

    C# 2023年4月18日
    00
  • C#中判断一个集合是否是另一个集合的子集的简单方法

    判断一个集合是否是另一个集合的子集,可以使用 C# 中的 LINQ (Language Integrated Query) 扩展方法来实现。 下面是判断一个集合是否是另一个集合的子集的简单方法: using System.Linq; // 判断一个集合是否是另一个集合的子集的简单方法 public static bool IsSubset<T>(…

    C# 2023年6月8日
    00
  • C#多线程学习(二) 如何操纵一个线程

    C#多线程学习(二) 如何操纵一个线程 线程学习第一篇:C#多线程学习(一) 多线程的相关概念 下面我们就动手来创建一个线程,使用Thread类创建线程时,只需提供线程入口即可。(线程入口使程序知道该让这个线程干什么事) 在C#中,线程入口是通过ThreadStart代理(delegate)来提供的,你可以把ThreadStart理解为一个函数指针,指向线程…

    C# 2023年4月24日
    00
  • Razor常用语法介绍及示例

    下面是关于“Razor常用语法介绍及示例”的详细攻略: Razor常用语法介绍及示例 1. Razor简介 Razor是ASP.NET Web Pages框架的视图引擎,它融合了C#和HTML的表现力和灵活性,可以在不破坏HTML结构的前提下,让服务器端代码和客户端代码混合在一起。 Razor语法是以“@”符号开头的指令和表达式组成的,它支持各种C#语法和H…

    C# 2023年5月31日
    00
  • 电脑绘画软件哪个好?常用的绘画软件有哪些?

    电脑绘画软件是一种方便快捷的数字绘画工具,通过它们,用户可以在计算机上进行绘画、设计和插图等创作。常用的绘画软件有以下几种: 1. Adobe Photoshop Adobe Photoshop是一款强大的图像处理软件,因为其具有广泛的功能和创造力而被广泛使用。除了像画笔、橡皮擦和填充工具之类的基本绘画工具外,Photoshop还包括许多专业的效果和滤镜,并…

    C# 2023年6月7日
    00
合作推广
合作推广
分享本页
返回顶部