分支循环

news/2024/7/2 23:09:09

链客,专为开发者而生,有问必答!

此文章来自链客区块链技术问答社区,未经允许拒绝转载。

在这里插入图片描述

程序的流程控制结构一共有三种:顺序结构,选择结构,循环结构。

一、条件语句

1.1 If语句

语法格式:

if 布尔表达式 {

/* 在布尔表达式为 true 时执行 */

}

if 布尔表达式 {

/* 在布尔表达式为 true 时执行 */

} else {

/* 在布尔表达式为 false 时执行 */

}

if 布尔表达式1 {

/* 在布尔表达式1为 true 时执行 */

} else if 布尔表达式2{

/* 在布尔表达式1为 false ,布尔表达式2为true时执行 */

} else{

/* 在上面两个布尔表达式都为false时,执行*/

}

示例代码:

package main

import “fmt”

func main() {

/* 定义局部变量 */

var a int = 10

/* 使用 if 语句判断布尔表达式 */

if a < 20 {

   /* 如果条件为 true 则执行以下语句 */fmt.Printf("a 小于 20\n" )

}

fmt.Printf(“a 的值为 : %d\n”, a)

}

如果其中包含一个可选的语句组件(在评估条件之前执行),则还有一个变体。它的语法是

if statement; condition {

}

if condition{

}

示例代码:

package main

import (

"fmt"

)

func main() {

if num := 10; num % 2 == 0 { //checks if number is evenfmt.Println(num,"is even")}  else {fmt.Println(num,"is odd")}

}

需要注意的是,num的定义在if里,那么只能够在该if…else语句块中使用,否则编译器会报错的。

1.2 switch 语句

1.2.1 switch的语法

switch是一个条件语句,它计算表达式并将其与可能匹配的列表进行比较,并根据匹配执行代码块。它可以被认为是一种惯用的方式来写多个if else子句。

switch 语句用于基于不同条件执行不同动作,每一个 case 分支都是唯一的,从上直下逐一测试,直到匹配为止。switch 语句执行的过程从上至下,直到找到匹配项,匹配项后面也不需要再加break。

而如果switch没有表达式,它会匹配true

Go里面switch默认相当于每个case最后带有break,匹配成功后不会自动向下执行其他case,而是跳出整个switch, 但是可以使用fallthrough强制执行后面的case代码。

变量var1 可以是任何类型,而 val1 和 val2 则可以是同类型的任意值。类型不被局限于常量或整数,但必须是相同的类型;或者最终结果为相同类型的表达式。您可以同时测试多个可能符合条件的值,使用逗号分割它们,例如:case val1, val2, val3。

switch var1 {

case val1:...case val2:...default:...

}

示例代码:

package main

import “fmt”

func main() {

/* 定义局部变量 */

var grade string = “B”

var marks int = 90

switch marks {

  case 90: grade = "A"case 80: grade = "B"case 50,60,70 : grade = "C"  //case 后可以由多个数值default: grade = "D"  

}

switch {

  case grade == "A" :fmt.Printf("优秀!\n" )     case grade == "B", grade == "C" :fmt.Printf("良好\n" )      case grade == "D" :fmt.Printf("及格\n" )      case grade == "F":fmt.Printf("不及格\n" )default:fmt.Printf("差\n" );

}

fmt.Printf(“你的等级是 %s\n”, grade );

}

1.2.2 fallthrough语句

如需贯通后续的case,就添加fallthrough

package main

import (

"fmt"

)

type data [2]int

func main() {

switch x := 5; x {default:fmt.Println(x)case 5:x += 10fmt.Println(x)fallthroughcase 6:x += 20fmt.Println(x)}

}


http://lihuaxi.xjx100.cn/news/237411.html

相关文章

深度讲解:web前端性能优化

一、课程简介&#xff1a; 1、课程大纲 涉及到的分类 网络层面构建层面浏览器渲染层面服务端层面涉及到的功能点 资源的合并与压缩图片编解码原理和类型选择浏览器渲染机制懒加载预加载浏览器存储缓存机制PWAVue-SSR前端性能优化原理 作用及原理如何与真实业务场景结合理论结合…

阿里巴巴一年投三家AR公司,AR购物或是最终目标

阿里巴巴再投资AR公司&#xff0c;一年连续投资超2.2亿美元&#xff0c;它到底想要做什么&#xff1f; 最近&#xff0c;以色列AR眼镜厂商Lumus获得来自阿里巴巴的600万美元的投资。此前&#xff0c;镁客网报道过这家公司在去年12月份获得由广达电脑、HTC和盛大集团投资的300万…

区块链架构详解

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自链客区块链技术问答社区&#xff0c;未经允许拒绝转载。 准备工作 区块链不是一种技术实现&#xff0c;而是一个系统的架构设计&#xff0c;使用一系列的技术组合用于完成去中心化的数据存储。比特…

python 文件追加写入_Python写入文件–解释了打开,读取,追加和其他文件处理功能

python 文件追加写入欢迎 (Welcome) Hi! If you want to learn how to work with files in Python, then this article is for you. Working with files is an important skill that every Python developer should learn, so lets get started.嗨&#xff01; 如果您想学习如何…

消息队列的面试题7

1、面试题 如果让你写一个消息队列&#xff0c;该如何进行架构设计啊&#xff1f;说一下你的思路 2、面试官心里分析 其实聊到这个问题&#xff0c;一般面试官要考察两块&#xff1a; &#xff08;1&#xff09;你有没有对某一个消息队列做过较为深入的原理的了解&#xff0c;或…

区块链基础:理论和术语

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自链客区块链技术问答社区&#xff0c;未经允许拒绝转载。 一、区块链&#xff1a; 1.百度百科上对区块链的定义是&#xff1a;区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机 技…

vm

为什么80%的码农都做不了架构师&#xff1f;>>> ps ax -O ppid,flags,mwchan | awk $6 ~ /^D/ || $6 "STAT" 转载于:https://my.oschina.net/doz/blog/1630464

堆和栈的区别 之 数据结构和内存

数据结构的栈和堆 首先在数据结构上要知道堆栈&#xff0c;尽管我们这么称呼它&#xff0c;但实际上堆栈是两种数据结构&#xff1a;堆和栈。 堆和栈都是一种数据项按序排列的数据结构。 栈就像装数据的桶或箱子 我们先从大家比较熟悉的栈说起吧&#xff0c;它是一种具有后进先…