条件语句

  1. if语句

    if 布尔表达式 {
    
    }else 布尔表达式{
    
    }else{
    
    }
    1. if语句后的{,一定要和if条件写在同一行,否则报错
    2. else一定要在if语句}之后,不能自己另起一行
  2. if语句变型写法

    if statement;conditon{//注意分号分隔
    
    }
    //statement中可以声明变量,初始化变量等操作,其定义的变量可以在if语句的任何部分访问,出了if语句就无法访问
  3. switch语句

    switch 变量 { //这个变量没有类型限制
    case val1: //val1是一个具体值
    ...
    case val2:
    ...
    default:
    ...
    }
    1. switch可以作用在任何类型上,
    2. case后的数值必须与switch作用的变量类型一致
    3. case后的数据必须是唯一的,不能出现重复
    4. default语句是可选的
    5. if只能作用在布尔类型上
  4. switch语句的其他写法

    switch{ //省略switch后的变量,相当于变为switch true {}的形式,也就是swtich后有个隐式的变量,并且这个这个变量被赋值为true
    case true:
    ...
    case false:
    ...
    } v1 := 23 //case后的true形式,也可以是使用switch外部变量的表达式(能返回true或false)
    switch{
    case v1<50:
    fmt.Println("aaaaaaaa")
    case v1>=50:
    fmt.Println("bbbbbbbbbbbb")
    }
    switch{
    case 数值1,数值2,数值3://case后可以跟随多个数值,也就是具有相同逻辑的分支条件可以写在一起
    ...
    case 数值4,数值5:
    ...
    }
    switch 初始化表达式;变量{ //同if一样,初始化语句与变量用;分隔
    //初始化表达式中定义的变量,只能在switch语句中可以访问
    }
    //switch默认每个case最后带break,匹配成功后不会自动向下执行其他case,而是跳出整个switch,但是可以用fallthrough强制执行后边的case代码。
    
    //fallthrough:用于穿透switch。当switch中某个case匹配成功之后,就执行该case语句,如果遇到fallthrough,那么后边紧邻的case,无需匹配,直接穿透执行。fallthrough必须放在case块的最后一行。
    
    switch v:=1;v {
    case 1:
    fmt.Println(1)
    fallthrough
    case 2:
    fmt.Println(2)
    } 1
    2 fallthrough会是break失效,继续顺序执行下一个case,并且下一个case无需匹配,直接穿透执行
  5. for循环语句

    //标准写法
    for init;condition;post{} //省略表达式init,post
    //init;condition;post三个表达式都是可选的
    //省略表达式init,post;效果相当于其他语言的while(条件)
    for ;condition; { }//;可以保留也可以去掉
    for condition {} //同时省略三个表达式,相当于其他语言的while(true)永真
    for{ } //省略表达式condition,相当于condition设置为永真true
    for ; ; {} //其余写法 for表达式中同时省略几个表达式都可以
    省略init:初始条件可以写在for代码块之前
    省略condition:循环永远成立--死循环
    省略post:条件变化需要写在{}中,否则就是个死循环
    循环结束:
    条件不满足时,循环就结束了
    但是通过break和continue语句可以强制结束循环
    嵌套循环
    break和continue默认结束离的最近的里层循环
    如果先结束指定的某个循环,可以给指定循环贴标签(起名) out:for i:=0;i<5;i++{
    for j:=0;j<3;j++{
    fmt.Println(i,j)
    if i ==2 {
    break out
    //continue out
    }
    }
    }
  6. goto语句

    可以无条件的转移到程序中指定的行,通常配合条件语句使用。

    goto label
    .....
    .....
    label: statement

Gol流程控制的更多相关文章

  1. 第10章 Shell编程(4)_流程控制

    5. 流程控制 5.1 if语句 (1)格式: 格式1 格式2 多分支if if [ 条件判断式 ];then #程序 else #程序 fi if [ 条件判断式 ] then #程序 else # ...

  2. Shell命令和流程控制

    Shell命令和流程控制 在shell脚本中可以使用三类命令: 1)Unix 命令: 虽然在shell脚本中可以使用任意的unix命令,但是还是由一些相对更常用的命令.这些命令通常是用来进行文件和文字 ...

  3. PHP基础知识之流程控制的替代语法

    PHP 提供了一些流程控制的替代语法,包括 if,while,for,foreach 和 switch. 替代语法的基本形式是把左花括号({)换成冒号(:),把右花括号(})分别换成 endif;,e ...

  4. Python黑帽编程2.4 流程控制

    Python黑帽编程2.4  流程控制 本节要介绍的是Python编程中和流程控制有关的关键字和相关内容. 2.4.1 if …..else 先上一段代码: #!/usr/bin/python # - ...

  5. 使用yield进行异步流程控制

    现状 目前我们对异步回调的解决方案有这么几种:回调,deferred/promise和事件触发.回调的方式自不必说,需要硬编码调用,而且有可能会出现复杂的嵌套关系,造成"回调黑洞" ...

  6. [Java入门笔记] Java语言基础(四):流程控制

    流程控制指的是在程序运行的过程中控制程序运行走向的方式.主要分为以下几种: 顺序结构 顺序结构,顾名思义,是指程序从上往下逐步顺序执行.中间没有任何的判断和跳转. 分支结构 Java提供两种分支结构: ...

  7. node基础13:异步流程控制

    1.流程控制 因为在node中大部分的api都是异步的,比如说读取文件,如果采用回调函数的形式,很容易造成地狱回调,代码非常不容易进行维护. 因此,为了解决这个问题,有大神写了async这个中间件.极 ...

  8. Shell入门教程:流程控制(1)命令的结束状态

    在Bash Shell中,流程控制命令有2大类:“条件”.“循环”.属于“条件”的有:if.case:属于“循环”的有:for.while.until:命令 select 既属于“条件”,也属于“循环 ...

  9. Oracle中PL/SQL的执行部分和各种流程控制

    Oracle中PL/SQL的执行部分和异常部分 一.PL/SQL的执行部分. 赋值语句. 赋值语句分两种,一种是定义一个变量,然后接收用户的IO赋值:另一种是通过SQL查询结果赋值. 用户赋值举例: ...

随机推荐

  1. redis缓存优化

    redis缓存优化 一.问题 在Javaweb项目中,如果每次刷新,所有资源都重新从数据库中读取,这样每次效率会很低,在这里可以使用redis非关系型数据库,将一些不经常变化得资源加载进内存中.提高效 ...

  2. ROS之usb_cam

    source devel/setup.*sh roslaunch usb_cam usb_cam-test.launch rqt_graph查看动态消息图 当我们把鼠标放在/usb_cam/image ...

  3. adworld python-trade | python反编译

    附件是.pyc格式的文件. Python程序中,原始程序代码存储在.py文件里,而Python会在执行.py文件的时候,会将.py形式的程序编译成中间式文件(byte-compiled)的.pyc文件 ...

  4. 【剑指Offer】62、序列化二叉树

    题目描述 请实现两个函数,分别用来序列化和反序列化二叉树 二叉树的序列化是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树可以持久保存.序列化可以基于先序. ...

  5. 修改sudoers

    使用visudo命令 [root@898f990a8808 etc]# visudo

  6. 如何使用GitHub中和别人合作开发一个项目

    第一步:找到别人在GitHub的项目,点击Fork跳转到自己的GitHub 第二步:跳转到自己页面后进行克隆下载 第三步:在自己的idea中修改完毕后,进行推送将自己GitHub的项目进行修改 第四步 ...

  7. 使用opencv自带Tracker进行目标跟踪——重新设定跟踪目标

    当希望重新设定一个目标进行跟踪的时候,以下两种做法都是无效的: 1.将新对象的Rect2d直接传递给update()函数: 2.再次使用tracker的init()函数. 解决办法:重新创建一个Tra ...

  8. 二分类模型之logistic

    liner classifiers 逻辑回归用在2分类问题上居多.它是一个非线性的回归模型,其最大的好处恰恰是可以解决二元类问题,目前在金融行业,基本都是使用Logistic回归来预判一个用户是否为好 ...

  9. PAT (Advanced Level) Practice 1028 List Sorting (25 分) (自定义排序)

    Excel can sort records according to any column. Now you are supposed to imitate this function. Input ...

  10. HTML连载64-a标签伪类选择器的注意点与练习

    一.a标签的伪类选择器注意点 (1)a标签的伪类选择器可以单独出现,也可以一起出现.也就是可以设置多个状态的样式. (2) a标签的伪类选择器如果一起出现,那么有严格的顺序要求,编写的顺序必须要遵守原 ...