golang 流程控制

embedded/2024/12/22 15:15:45/

流程控制

一 if条件语句

1 if单分支

if条件表达式{ //条件表达式不建议写括号 if后一定要有空格与条件表达式分开

逻辑代码 /大括号一定要写不能省略

}

例如

var age int
    fmt.Println("请输入学生1年龄:")
    fmt.Scanln(&age)
    fmt.Println("学生1年龄是: ",age)
    if age>18{
        fmt.Println("nihao")
    }

2 if双分支

if条件表达式{

}else{

}

例如

var age int
    fmt.Println("请输入学生1年龄:")
    fmt.Scanln(&age)
    fmt.Println("学生1年龄是: ",age)
    if age>18{
        fmt.Println("成年啦")
    }
    else{
        fmt.Println("未成年")
    }

注意: else与}要在同一行否则会报错 如下

if age>18{
        fmt.Println("成年啦")
    }
    else{
        fmt.Println("未成年")
    }

3 if多分支

if条件表达式{

}else if条件表达式{

}else{

}

建议: else虽然可以省略 但是建议else存在保证输出效果的正确性

二 switch条件表达式

switch 表达式{

case 值1 值2.....:

代码块

case 值1 值2....:

代码块

.

.

.

default:

代码块

}

例如

var  score int
    fmt.Println("请输入学生1分数:")
    fmt.Scanln(&score)
    switch score/10{
        case 10:
            fmt.Println("A级")
        case 9:
            fmt.Println("B级")
        case 8:
            fmt.Println("C级")
        case 7:
            fmt.Println("D级")
        default:
            fmt.Println("E级")
    }

switch细节:1 switch后是一个表达式(即:常量值 变量 一个有返回值的函数都可以)

2 case后面的表达式如果是常量 则要求不能重复

3 case后面可以带有多个值

4 case 后面不能使用break

5 default语句不是必须的 且位置是随意的

6 switch后面不带表达式 则当作if语句使用 (golang独有)

var  score int
    fmt.Println("请输入学生1分数:")
    fmt.Scanln(&score)
    
    var grade int = score/10
    switch {
        case grade==10:
            fmt.Println("A级")
        case grade==9:
            fmt.Println("B级")
        case grade==8:
            fmt.Println("C级")
        default:
            fmt.Println("E级")
        case grade==7:
            fmt.Println("D级")
        
    }

7 switch穿透 如果在case语句中‘增加fallthrough 则会执行下一个case

var  score int
    fmt.Println("请输入学生1分数:")
    fmt.Scanln(&score)

    var grade int = score/10
    switch {
        case grade==10:
            fmt.Println("A级")
        case grade==9:
            fmt.Println("B级")
        case grade==8:
            fmt.Println("C级")
        case grade==7:
            fmt.Println("D级")
            fallthrough
        default:
            fmt.Println("E级")
        
    }

3 for循环

for 初始表达式; 布尔表达式;迭代因子{

循环体;

}

var sum int =0

for i:=1;i<=5;i++ {

sum+=i

}

fmt.Println(sum)

for range(go语言独有的迭代结构) 可以遍历数组 切片 字符串 map及通道

for key, val := range string {

}

例如

var s string = "hello"

for i , value := range s {

fmt.Printf("下标索引是%d 值是%c\n",i,value)

}


http://www.ppmy.cn/embedded/16279.html

相关文章

前端科举八股文-CSS篇

前端科举面经-CSS篇 Css选择器的优先级css盒模型行内元素和块级元素的区别?link标签和import标签的区别讲一下弹性盒子布局的常见属性flex是哪三个属性的简写什么是BFC&#xff1f; 有什么作用垂直居中的方法?visibilityhidden, opacity0&#xff0c;display:none的区别清除浮…

按照模板导出复杂样式的excel

导出excel通常使用的是apache poi,但是poi的api相当复杂&#xff0c;所以当导出的excel样式比较复杂时&#xff0c;写起来就比较头疼了&#xff0c;这里推荐使用easypoi, 可以很方便的根据模板来导出复杂excel 文档地址: 1.1 介绍 - Powered by MinDoc 我们要实现如图所示效果…

模块化 手写实现webpack

模块化 common.js 的导入导出方法&#xff1a; require \ export 和 module.exports export 和 module.export nodejs 内存1.4G -> 2.8G cjs ESModule 主要区别&#xff1a; require属于动态类型&#xff1a;加载执行 同步 esmodul是静态类型&#xff1a;引入时并不会真的去…

详解Qt中的鼠标事件

在Qt中&#xff0c;处理鼠标事件是构建交互式界面的关键。Qt提供了一系列与鼠标相关的事件处理函数&#xff0c;允许开发者捕获鼠标的各种动作&#xff0c;如按下、释放、移动、双击等。以下是鼠标事件的使用方法、技巧以及注意事项&#xff0c;并附带C代码示例。 基础使用方法…

揭秘神器:智能私信破局获客难!

在数字营销的海洋中&#xff0c;每个企业都如同一艘努力航行的船&#xff0c;希望能在广阔的客户蓝海中获得丰收。然而&#xff0c;现实却往往充满挑战&#xff0c;尤其是当面对如何吸引并维系客户这一核心难题时。传统的获客手段逐渐显得力不从心&#xff0c;而智能科技的介入…

微信浏览器input[file]拍照点确认后强刷新解决

描述 公众号h5做的点击拍照选择照片&#xff0c;调用相机拍完照点确认时强制回退到登录页面。而且刷新是不固定的&#xff0c;调试了N久&#xff0c;直到现在&#xff0c;还会有这个情况发生。上网查找也没有具体答案。最靠谱的说法就是手机内存不足。 iOS手机经常出现 安卓…

MySQL主从的应用

说明&#xff1a;本文介绍MySQL主从在实际中的应用。主从搭建和问题参考下面两篇文章&#xff1a; MySQL主从结构搭建 搭建MySQL主从结构时的问题 数据迁移 当我们搭建完MySQL主从&#xff0c;第一步当然是把历史数据导入到主从结构中。有以下两种方式&#xff1a; 开启主从…

【注解和反射】通过反射动态创建对象、调用普通方法、操作属性

继上一篇博客【注解和反射】获取类运行时结构-CSDN博客 目录 八、通过反射动态创建对象 测试&#xff1a;通过反射动态创建对象 思考&#xff1a;难道没有无参的构造器就不能创建对象了吗?只要在操作的时候明确的调用类中的构造器并将参数传递进去之后&#xff0c;才可以实…