Go语言学习笔记 --- 控制语句之if判断,循环语句for, switch语句和跳转语句

【Go】Go语言中的流程控制语句 在编程中,流程控制是决定程序如何执行的关键部分。Go语言作为一种静态类型、编译型语言,其流程控制机制与其他高级语言类似,但也有一些独特之处。本文将详细探讨Go语言中的流程控制语句,包括顺序控制、条件控制(if、if-else、if-else if-else)、循环控制(for循环、for-range循环)、分支控制(switch语句)、以及跳转控制(goto、break、continue)。本文通过实际案例,我们将深入理解这些控制语句的使用方法和应用场景。 阅读详情

学习笔记根据 无闻 go语言基础教程 整理

判断语句if

  • 条件表达式没有括号
  • 支持一个初始化表达式 (可以并行方式)
  • 做大括号必须和条件语句或else在同一行
  • 支持单行模式
  • 初始化语句中的变量为block级别,同时隐藏外部同名变量
  • 示例代码:
 package main

 import (
    "fmt"
 )

 func main() {
    test1()
    test2()
    test3()
    test4()
    test5()
 }

 func test1() {
    a := 1
    if a == 1 {
        fmt.Println("a == 1") // a == 1
    }
 }

 func test2() {
    if b := 2; b == 2 {
        fmt.Println("b == 2") // b == 2
    }
    // fmt.Println(b) // 不能直接输出,会报错 undefined:b
 }

 func test3() {
    if c, d := 3,4; c < d {
        fmt.Println("c < d") // c < d
    }
 }

 func test4() {
    e := 10
    if e:=5; e < 10 {
        fmt.Println(e) // 5
    }
    fmt.Println(e) // 10
 }

 func test5() {
    if e:=5; e > 10 {
        fmt.Println("e > 10")
    } else {
        fmt.Println("e <= 10") // e <= 10
    }
 }

循环语句for

  • Go 只有for一个循环语句关键字,但支持3种形式
  • 初始化和步进表达式可以是多个值
  • 条件语句每次循环都会被重新检查,因此不建议在条件语句中使用函数,尽量提前计算好条件以变量或常量代替
  • 左大括号必须和条件语句在同一行
  • 示例代码:
 package main

 import (
    "fmt"
 )

 func main() {
    test1()
    test2()
    test3()
    test4()
 }

 func test1() {
    a := 1
    for {
        a ++
        if a > 2 {
            break
        }
        fmt.Println(a)
    }
    fmt.Println("for-over1")
    /*
    // 最终输出
    2
    for-over1
    */
 }

 func test2() {
    b := 1
    for b <= 2{
        b ++
        fmt.Println(b)
    }
    fmt.Println("for-over2")
    /*
    // 最终输出
    2
    3
    for-over2
    */
 }

 func test3() {
    c := 1
    for i:=1; i<=2; i++{
        c ++
        fmt.Println(c)
    }
    fmt.Println("for-over3")
    /*
    // 最终输出
    2
    3
    for-over3
    */
 }

 func test4() {
    d := "string"
    e := 1
    l := len(d) // 不要把长度计算放置于for中,每次都会重新检查,影响性能
    for i:=1; i<=l; i++{
        e ++
        fmt.Println(e)
    }
    fmt.Println("for-over4")
    /*
    // 最终输出
    2
    3
    4
    5
    6
    7
    for-over4
    */
 }

switch语句

  • 可以使用任何类型或表达式作为条件语句
  • 无需break, 一旦调价你符合自动终止
  • 如果希望执行下一个case,需使用fallthrough语句
  • 支持一个初始化表达式,可以是并行方式,右侧需跟分号
  • 左大括号必须和条件语句在同一行。
  • 示例代码:
 package main

 import (
    "fmt"
 )

 func main() {
    // test1()
    // test2()
    test3()
    // test4()
 }

 // 无需break,匹配到则停止,不会存在穿透问题
 func test1 () {
    a := 1
    switch a {
        case 0:
            fmt.Println("a=0")
        case 1:
            fmt.Println("a=1") // a=1
        default:
            fmt.Println("None")
    }
 }

 // switch 中没有表达式,表达式可放在case中
 func test2() {
    a := 1
    switch {
        case a >= 0:
            fmt.Println("a>=0") // a>=0 // 如果不添加fallthrough 只会匹配到此处,即使下面的匹配也不会往下执行
            fallthrough // 添加fallthrough, 则会继续匹配下一个case
        case a >= 1:
            fmt.Println("a>=1") // a>=1
        default:
            fmt.Println("None")

    }
 }

 // 在switch 中声明,变量范围只在switch语句块中
 func test3() {
    switch a := 1; {
        case a >= 0:
            fmt.Println("a>=0") // a>=0
        case a >= 1:
            fmt.Println("a>=1")
        default:
            fmt.Println("None")
    }
 }

跳转语句

  • 跳转语句goto, break, continue
  • 三个语法都可配合标签使用
  • 标签名区分大小写,若不使用会造成编译错误
  • Break 与 continue 配合标签可用于多层循环的跳出
  • Goto 是调整执行位置,与其它两个语句配合标签的结果并不相同
  • 实例代码:
  package main

  import (
    "fmt"
  )

  func main() {
    test1()
    test2()
    test3()
  }

  // 突破无限循环
  func test1 () {
    LABEL1:
        for{
            for i:=0; i< 10; i++ {
                if i>3 {

                    break LABEL1 // 单纯的break无法突破无限循环,加上LABEL1外层标签标识则可跳出
                }
                fmt.Println("i:",i)
            }
        }
        fmt.Println("over")

    /*
    // 运行结果:
    i:0
    i:1
    i:2
    i:3
    over
    */
  }

  // 测试goto语句
  func test2() {
    for {
        for i:=0; i<10; i++ {
            if i>3 {
                goto LABEL2
            }
            fmt.Println("i:",i)
        }
    }
    LABEL2:
        fmt.Println("over")

    /*
    i: 0
    i: 1
    i: 2
    i: 3
    over
    */
  }

  // continue
  func test3() {
    LABEL1:
        for i:=0; i<3; i++ {
            // 无限循环
            for {
                fmt.Println("i:",i)
                continue LABEL1 // 立马跳出无限循环
                // fmt.Println(i) // 此处continue后的代码永远不会被执行
            }

        }
        fmt.Println("over")

    /*
    i: 0
    i: 1
    i: 2
    over
    */
  }
Go基础:Go语言流程控制详解 本文介绍了Go语言的流程控制语句,主要包括条件语句、循环语句和跳转语句。在条件语句部分,详细讲解了if语句的基本语法、短声明特性以及switch语句的灵活用法。循环语句部分重点说明了for循环的多种形式,包括传统for循环、无限循环和range循环。跳转语句部分介绍了break、continue和goto的用法及适用场景。通过示例代码展示了每种语句的具体应用,帮助开发者编写逻辑清晰、结构高效的Go程序。 阅读详情

相关推荐

说说通用报表控件

我们已经开发有2款WINCC报表控件,一种是固定模板,一种是自定义模板。但是它们有个共同特点,就是数据都是来自WINCC的归档数据库。使用WINCC归档数据库的好处是不需要自己写脚本保存数据。但是有些情况下,我们需要自己保存数据,或者第三方系统通过数据表的方式给我们提供数据。那这样的话,我们之前的两款控件就不支持了。正好有个客户有类似需要,于是加了一天班写了个通用报表控件。之所以说是通用,是因为它可以插入任何支持.NET控件的组态软件中,比如WINCC、IFIX等。并且它不依赖于组态软件自己...

HwLib_的博客 3551

Golang学习笔记(七)if判断语句

golang的判断语句,不再需要用()来括起条件,但{必须跟if在一行。和java一样,也有else关键字。 基础例子,判断奇偶数,给出一个值30,让程序来判断。 func EvenOdd(){ num := 30 if num % 2 == 0 { fmt.Println(num,"这是个偶数") } else { fmt.Println(num,"这是个奇数") } } ...

ynzcxx的博客 1176

Ubuntu22.04安装ROS2 —— ROS2 humble 详细图文教程

本文详细介绍了如何在Ubuntu22.04(Jammy)系统下配置ROS2环境,安装RO2软件包,并验证安装成功。ROS2的版本是Humble Hawksbill。:ROS是一个开源的,提供硬件抽象、设备驱动、库、工具和通信机制,支持模块化开发与集成,广泛用于机器人控制和自动化应用。ROS2 相较于 ROS1 在架构设计、通信机制和平台支持等方面做出了改进。ROS1 采用集中式主节点(Master)进行节点间通信,存在单点故障风险,且实时性和跨平台支持较弱。

weixin_49649078的博客 8839

GO的for语句和switch语句的使用细节

Go的for语句和switch语句的使用细节

hefrankeleyn的博客 701

基恩士PLC编程避坑指南:局部变量@前缀的3个隐藏陷阱与实战解决方案

本文深入剖析了基恩士PLC编程中使用@前缀创建局部变量的三大隐藏陷阱,包括在线调试时的数据丢失、数据类型冲突以及子程序复用时的地址覆盖问题。针对每个陷阱,提供了预定义变量、强类型规范和基址参数传递等实战解决方案,帮助中高级工程师提升代码健壮性与可维护性。

weixin_29171087的博客 103

机器学习预测股票收益(一)之随机森林模型

机器学习预测股票收益(一)前言一、导入库和数据二、处理数据以及计算特征变量三、使用随机森林回归预测股票收益1.构建训练集和测试集2.查看预测结果四、根据预测结果构建long-short投资组合1.定义投资组合函数2.定义绩效分析函数五、引入Fama-French Factor六、投资组合表现1.超额收益表现2.多因子回归总结 前言 本文将使用Python整理1927-2020年所有美国上市公司股票数据。根据历史收益以及交易量,使用随机森林,支持向量机以及神经网络等机器学习方法预测股票收益。最优结果构建的资产

weixin_47174968的博客 1万+

Go语言基础--条件判断(if语句)

if语句它允许程序根据一个或多个条件(通常是布尔表达式)的真假来决定执行哪一段代码。如果条件为真(true),则执行if语句块内的代码;如果条件为假(false),则跳过该代码块,继续执行if语句之后的代码(如果有else或else if部分,则根据条件判断是否执行这些部分)。

qq_59634082的博客 1032

《全连接到卷积神经网络:图像识别的演变历程》

这篇文章会从传统全连接层面临的困境说起,揭示卷积神经网络(CNN)成为图像识别核心动力的原因,探究其背后蕴含的设计思想与技术创新。但是回顾历史,CNN的出现提醒我们:技术的突破往往是由对自然规律的模仿和重新构建得来的。也许,当机器真的学会“像人一样看世界”的时候,它们的“眼睛”早就超过生物视觉的限制了。例如,用5×5的核处理224×224的输入时,只要25个参数(而不是全连接那种百万级的)。* 局部性:网络的底层只需留意局部的地方(像边缘、纹理这样的地方),不用管那些全局像素之间复杂的关系。

2401_82434295的博客 675

Golang基础(if条件判断和for循环遍历)

一. 条件判断if 在程序开发中经常需要判断.根据情况不同,程序执行的分支也不同.这个时候就可以使用if if在程序中代表如果,如果条件成立就执行,否则就不执行 if的语法结构,在编译器中表达式两侧可以写小括号,但是通常省略 //单独使用 if 表达式 { ​ } 在if语法结构中所有表达式最终结果都是bool类型,true代表成立执行对应代码 二. if单独使用 if单独使用时只影响到自己对应的代码块 func main() {

qq_31387691的博客 2043

若依框架集成saToken

若依版本3.8.8,鉴权采用security框架,这种框架太重,项目中想实现对外提供接口功能。尽快减少修改原框架的逻辑基础上,采用satoken实现。

sccd2009的专栏 1483

Unity3d实现红外热成像效果

1.将需要在红外图像中高亮的物体设置到图层PostProcessing。 2.新建一个相机CameraHighLight,设置其Culling Mask为PostProcessing,也就是在这个相机中只有PostProcessing图层的物体可见。 3.新建一个RenderTexture,命名为HightLightRt,将CameraHighLight的Target Texture设HightLightRt。 4.新建一个相机Camera2,这个相机用于显示其他物体。 接下来将CameraHigh

zouxin_88的专栏 8330

switch条件语句与跳转语句(附分数分层案例)

switch条件语句与break跳转语句的用法(附分数分层案例,输入分数可显示分数属于哪一类分数段)

m0_65156031的博客 5668

评估篇| 大模型评测综述

1、基于人类的评测。与针对基础大语言模型的自动化评测不同,微调大语言模型的评测更加注重模型在实际应用场景中的表现,如与人类交互的自然度、对齐度等。2、基于模型的评测。例如,AlpacaEval 排行榜 基于由大语言模型合成的人类需求指令作为评测任务,然后收集待评估大模型的回应,并采用 GPT-4 等大语言模型作为评测员,将待评估大语言模型的输出与参考输出进行成对比较。1、大语言模型对评估设置极为敏感,包括问题的表述方式、提示样本的选择以及答案的解析策略等,这些细微的差别都可能导致评估结果的显著变化。

youbingchen的博客 638

Golang流程控制语句

在使用for range遍历string时,它会按照UTF-8编码格式解析字符串,并以Unicode字符作为迭代的单位,每次迭代都会返回字符串中的一个Unicode字符(rune)和对应的索引,无论是单字节的ASCII字符还是多字节的汉字,都会被正确地解析并返回。在执行完对应的case语句的代码块后,程序会直接退出switch控制,如果希望程序继续执行下一个case语句的代码块,可以在代码块的最后通过fallthough关键字实现switch穿透。在switch后声明的变量仅在switch语句中有效。

2021dragon的博客 1789

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Go 流程控制 if、for、switch、break、goto

Go 支持如下几种流程控制语句: 条件语句:关键字有 if、else 和 else if 分支语句:关键字有 switch、case 和 select(用于通道,常用协程) 循环语句:关键字有 for 和 range 跳转语句:用于代码跳转,对应的关键字有 goto 注意:golang 没有 while循环~ 1、if 条件语句 1.1 if 语法结构 if 是用于测试某个条件(布尔型或逻辑型)的语句,如果该条件成立,则会执行 if 后由大括号括起来的代码块,否则就忽略该代码块继续执行后续的代码。 常用

Sunny_Future的博客 1378

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【转载】Go流程控制(if/else、for/range、switch、goto、break、continue)

文章目录0、唠唠叨叨1、分支结构(if / else)1.1、标准写法1.2、特殊写法2、循环结构(for)2.1、标准循环2.2、无限循环2.3、for 中的初始语句(开始循环时执行的语句)2.4、for 中的结束语句(循环结束时执行的语句)2.5、for 中的条件表达式(控制是否循环的开关)2.5.1、结束循环时带可执行语句的无限循环2.5.2、无限循环2.5.3、只有一个循环条件的循环3、键...

沙师弟专栏 1万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

go语言流程控制,if判断,for循环

流程控制是每种编程语言控制逻辑走向和执行次序的重要部分,流程控制可以说是一门语言的“经脉”。 Go语言中最常用的流程控制有if和for,而switch和goto主要是为了简化代码、降低重复代码而生的结构,属于扩展类的流程控制。 if else(分支结构) if条件判断基本写法 Go语言中if条件判断的格式如下: if 表达式1 { 分支1 } else if 表达式2 { 分支2 } else{ 分支3 } 当表达式1的结果为true时,执行分支1,否则判断表达式2,如果满足则执行

weixin_44706011的博客 788

Go语言之路————条件控制:if、for、switch

我是一名多年Java开发人员,因为工作需要现在要学习go语言,Go语言之路是一个系列,记录着我从0开始接触Go,到后面能正常完成工作上的业务开发的过程,如果你也是个小白或者转Go语言的,希望我这篇文章对你有所帮助。有关go其他基础的内容的文章大家可以查看我的主页,接下来主要就是把这个系列更完,更完之后我会在每篇文章中挂上连接,方便大家跳转和复习。

StreamlineWq的博客 972

[GO语言基础] 五.顺序控制语句和条件控制语句(if、else、switch)

作为网络安全初学者,会遇到采用Go语言开发的恶意样本。因此从今天开始从零讲解Golang编程语言,一方面是督促自己不断前行且学习新知识;另一方面是分享与读者,希望大家一起进步。前文介绍了Golang的运算,包括算术运算、逻辑运算、赋值运算、位运算及编程练习。这篇文章将详细讲解顺序控制语句和条件控制语句。 这系列文章入门部分将参考“尚硅谷”韩顺平老师的视频和书籍《GO高级编程》,详见参考文献,并结合作者多年的编程经验进行学习和丰富,且看且珍惜吧!后续会结合网络安全进行GO语言实战深入,加油~

杨秀璋的专栏 9294

Golang 条件循环语句

本文简单描述 golang 中最常用的两种流程控制语句,条件和循环。在其他编程语言的基础上介绍条件语句 if 和 switch 的语法和 fallthrough 关键字,以及循环语句 for 的三种使用形式和 break/continue 关键字,并粗略介绍了 goto 语句的用法。

wallace_www的博客 1万+

Go 控制结构 if,for ,switch

循环变量重用:在并发或闭包场景下,通过传参或重新声明创建局部变量副本避免。range 副本:区分值类型和引用类型,需修改原数据时通过索引操作。map 遍历:始终假设顺序不确定,有顺序需求时主动排序键。

weixin_43730884的博客 1083

Go语言的条件控制语句及循环语句的学习笔记

Go 语言提供了以下几种条件判断语句:在GO语言中,没有三目运算符1. if 2. if else3. if 嵌套4. switch,switch 语句用于基于不同条件执行不同动作,每一个 case 分支都是唯一的,从上至下逐一测试,直到匹配为止。switch 语句执行的过程从上至下,直到找到匹配项,匹配项后面也不需要再加 break。与其他高级语言的不同部分:switch 默认情况下 case 最后自带 break 语句,匹配成功后就不会执行其他 case,如果我们需要执行后面的 case,可以使用fal

m0_63622279的博客 1114

for循环里的if语句中break_Go语言极简教程 - 第五篇 控制语句

if语句语法IfStmt = "if" [ SimpleStmt ";" ] Expression Block [ "else" ( IfStmt | Block ) ] .特点if后面的条件判断表达式不需要小括号括起来。左大括号{必须放在和if/else if同行的行尾。if后面可以带一个简单语句,该语句可以声明新的变量并初始化或给已有变量赋值,新声明的变量仅在该if分支、else if分支以及...

weixin_39924486的博客 1699

逻辑控制语句以及循环控制语句

逻辑控制 所谓的逻辑控制,就是控制计算机阅读代码的一个顺序逻辑,作用提高算法的执行效率 条件判断语句 判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的) 1.if语句(一个if语句由一个布尔表达式后跟一个或多个语句组成.) if(a==b) { /*如果布尔表达式为真将执行的语句*/ } 如果布尔表达式为 true,则 ...

凭时间赢来的东西,时间肯定会为之作证 13万+

【From C To Go】1.5 控制结构

Go语言的快乐路径原则倡导优化和简化代码的主要逻辑路径,使其清晰、直观、易于理解和维护。通过早期返回和减少嵌套结构,可以实现这一目标。这个原则不仅提高了代码的可读性,还简化了维护和扩展,减少了潜在的错误。Go语言的for统一的循环结构:只使用一种for循环结构代替forwhile和do-while。更灵活的语法:支持省略初始语句、条件表达式和后置语句,允许实现无限循环。for-range循环:提供简洁的遍历数组、切片、映射、字符串和通道的方式,增强代码的可读性和可维护性。

qq_40424486的博客 2097

【Go语言学习系列04】Go基础语法(二):流程控制

全面讲解Go语言流程控制结构,包括if、switch、for循环的特殊用法,以及break、continue和goto的最佳实践

GopherTribe的博客 1061
上一篇: Go语言学习笔记 --- 指针和自增自减运算及相关注意事项
下一篇: 企业管理理论综述与实践 — 商业模式
Wang's Blog
博客等级 码龄12年 7438粉丝 2421原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wang's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值