首页 > 其他分享 >Golang - 5 Golang的流程控制:if/else、for、switch

Golang - 5 Golang的流程控制:if/else、for、switch

时间:2023-04-26 19:22:07浏览次数:35  
标签:case 200 fmt else Golang switch score Println

5 流程控制

目录

1 if/else

1.1 语法

	// 基本形式

  if 条件1 {
		
	}else 条件2 {
		
	}else {
		
	}
  • 多个分支
age := 99
if age>=80 {
   fmt.Println("耄耋老人")
}else if age>=70 && age<80 {
   fmt.Println("古稀老人")
}else {
   fmt.Println("花甲或者其他")
}

2 for

在golang中,只提供了for来进行循环,没有while等,但是可以通过别的写法来实现while的功能

2.1 语法

for 初始表达式;条件表达式;迭代表达式 {
  // do something
}

// 例如:
for i:=0;i<5;i++{
	fmt.Println(i)
}

2.2 简单写法与实现while的功能

(1)省略掉第一部分【分号不能省】

i:=0
for ;i<5;i++{
	fmt.Println(i)
}

(2)省略掉第三部分【分号不能省】

for i:=0;i<5;{
   fmt.Println(i)
   i++
}

(3)实现while功能:省略第一部分和第三部分

	i:=0
	for i<5{
		fmt.Println(i)
		i++
	}

(4)死循环

i:=0
for true {
   fmt.Println(i)
   i++
}

image-20230426171955493

瞬间打了124万条数据

2.3 基于迭代的循环、基于索引的循环

  • 基于索引的循环

	for i,j :=1,10;i<=10; i,j= i+1,j-1{
		fmt.Println("i",i)
		fmt.Println("j",j)
	}
  • 基于迭代的循环

    这样循环取到的是字符,而如果基于索引循环,取得的是字节

	s:="xfq小番茄"
 	for i,v:=range s{
 		fmt.Println(i)
 		fmt.Println(string(v))
	}

3 switch

switch是一个条件语句,用于将表达式的值与可能匹配的选项列表进行比较,并根据匹配情况执行相应的代码块,优雅的替换else-if

3.1 switch的基本使用

  • switch 后面的表达式不需要括号
  • case 语句块执行完会自动退出整个 switch 语句块,也就是不需要使用 break 显式声明
  • case 语句快执行完后,如果希望继续向下执行,可以使用关键字 fallthrough, 这样就和其他编程语言不加 break 效果一样了
switch expr {
  case v1:
  		...
  case v2:
  		...
  case v3, v4, v5:  // 可以同时测试多个可能符合条件的值
  		...
  default:
   		...
}

3.2 各种形式

① 普通表达式

score:=90
switch score {
case 90:
   fmt.Println("90")
case 80:
   fmt.Println("80")
default:
   fmt.Println("默认值")
}

② 省略expr表达式

score:=90
switch  {
case score>200:
	fmt.Println("比200大")
case score==200:
	fmt.Println("等于200")
case score<200:
	fmt.Println("比200小")
default:
	fmt.Println("默认值")
}
// 比200小

③ fallthrough

fallthrough表示当符合当前条件后,会无条件执行下一条语句

score:=200

switch  {
case score>200:
   fmt.Println("比200大")
case score==200:
   fmt.Println("等于200")
   fallthrough
case score<200:
   fmt.Println("比200小")
   fallthrough
default:
   fmt.Println("默认值")
}
====
等于200
比200小
默认值

标签:case,200,fmt,else,Golang,switch,score,Println
From: https://www.cnblogs.com/DuoDuosg/p/17357046.html

相关文章

  • go语言 函数高级、包的使用、if-else、循环、switch、数组
    函数高级//函数1没有参数没有返回值fun函数名(){}2有参数没有返回值fun函数名(aint){}3多个参数同一种类型,可以简写fun函数名(a,bint){}4多个参数同一种类型,有返回值可以简写fun函数名(a,bint)int{retruna+b}5多个返回值fun......
  • freeswitch的任务引擎问题与解决方案
     概述freeswitch核心框架中有一个定时任务系统task,在开发过程中用来做一些延时操作和异步操作很方便。我们在VOIP的呼叫流程中,经常会有一些对实时性要求没那么高的操作,或者会有阻塞流程的操作,我们都可以开启一个定时任务子流程,来达到延时和异步的目标。但是在实际的生产应用......
  • 函数高级、包的使用、if-else、循环、switch、数组
    目录1函数高级2包的使用3if-else4循环5switch6数组1函数高级packagemainimport"fmt"//1函数的参数和返回值都是类型的一部分,函数可以赋值给一个变量//test3函数,接收一个参,参数是函数类型:没有参数没有返回值//test有返回值,返回值是个函数:函数有两个参数,一......
  • golang -WARNING: undefined behavior - version of Delve is too old for Go version
    1.背景启动警告 这是idea内置的dlv.exe调试器版本太低了2.解决安装最新的goinstallgithub.com/go-delve/delve/cmd/dlv@latest安装成功后,在golang的安装位置多出来个新的dlv.exe  idea打开配置 写上自己的地址即可下面是我的 重启idea生效......
  • 关于golang线程安全
    最近在字节面试,面试有一个提问:golang中的string赋值是线程安全的吗?如果是,怎么验证,如果不是,怎么验证第一反应,golang的string底层结构:typestringStructstruct{strunsafe.Pointerlenint}其中str是一个不变数组,所以该变字符串的内容都会重新生成一个底层数组,但......
  • 引用 maxmind golang 库导致的程序无法 recover crash 的问题
    新做的Gateway程序打算使用一个maxmind第三方库来解析地理信息,想了一下比较简单找了一个库直接使用。项目跑了一天得到了一堆panic,程序崩溃超过1s丢了不少数据。 从stack信息可以看到调用amxminddb-golang这个库的readLeft出现了错误,最后抛出了一个unexceptedf......
  • golang 使用 net包实现 tcp server 示例
    之前用到golang进行网络编程时,主要就是使用net/http和web框架gin,这些网络库的底层其实也还是用的标准库自带的net包,很多是对路由或者其他做封装,而且golang本身的长处之一也是网络IO的处理,这也得益于其底层的IO模型,今天我们分享的是基于TCPserver/client的简单实现,后......
  • Golang - time包获取当前日期/时间戳并格式化输出
    获取时间对象packagemainimport("fmt""time")//24小时制constLAYOUT="2006-01-0215:04:05"//只能用这个日期,据说这是golang的诞生时间funcmain(){//获取当前日期now:=time.Now()fmt.Printf(now.Format(LAYOUT))//2022......
  • golang 中通过strings/bytes/bufio 等包实现相关IO
    在go的IO中,除了io、os等包,我们还有strings、bytes、bufio等实现IO读写,这其中有些实现了io.Reader,有些同时实现了io.Reader和io.Writer接口。接下来我们一个个看相关的使用。1.strings在strings包中,只实现了Reader,我们看看其代码://实现的readertypeRea......
  • golang 通过 os 包进行文件读写
    go中os包主要与操作系统打交道,实际底层还是通过相关的系统调用实现文件的读写操作,今天我们就来聊聊通过os包实现文件的读写操作。我们在使用os包进行相关操作时,主要流程:读操作open->read->close写操作open->read->write->close总体来说,读写操作都......