go语言流程控制(代码片段)

ych9527 ych9527     2022-12-06     233

关键词:

文章目录

一、for

  • Go语言中的循环语句只支持 for 关键字,而不支持 while 和 do-while 结构,关键字 for 的基本使用方法与C语言和C++ 中非常接近

  • for 后面的条件表达式不需要用圆括号()括起来,Go语言还进一步考虑到无限循环的场景,让开发者不用写无聊的 for(;;)do while(1);,而直接简化为如下的写法

    sum := 0
    for 
        sum++
        if sum > 100 
            break
        
    
    
  • Go语言的 for 循环同样支持 continue 和 break 来控制循环**,但是它提供了一个更高级的 break,可以选择中断哪一个循环**

    for i := 0; i < 2; i++ 
    	tab:
    		for j := 0; j < 2; j++ 
    			if j >= 1 
    				break tab //终端里层循环
    			
    			fmt.Printf("i:%d,j:%d\\n", i, j)
    			//i:0,j:0
    			//i:1,j:0
    		
    	
    
  • 将 if 判断整合到 for 中

    for i <= 10 
        i++
    
    

二、for range(键值循环)

  • for range 结构是Go语言特有的一种的迭代结构,在许多情况下都非常有用,for range 可以遍历数组、切片、字符串、map 及通道(channel),一般形式为

    for key, val := range coll 
        ...
    
    
  • val 始终为集合中对应索引的值拷贝

  • 一个字符串是 Unicode 编码的字符(或称之为 rune )集合,因此也可以用它来迭代字符串,返回的是ASCII值

    str := "ab"
    for k, v := range str 
    	fmt.Printf("k:%d,v:%c\\n", k, v) //k:0,v:a k:1,v:b
    
    
  • 通过 for range 遍历的返回值有一定的规律

    • 数组、切片、字符串返回索引和值
    • map 返回键和值
    • 通道(channel)只返回通道内的值

三、switch case语句

  • 概念

    • Go语言的 switch 要比C语言的更加通用,表达式不需要为常量,甚至不需要为整数,case 按照从上到下的顺序进行求值,直到找到匹配的项,如果 switch 没有表达式,则对 true 进行匹配,因此,可以将 if else-if else 改写成一个 switch

    • Go语言改进了 switch 的语法设计,case 与 case 之间是独立的代码块,不需要通过 break 语句跳出当前 case 代码块以避免执行到下一行

      	var a = "hello"
      	switch a 
      	case "hello":
      		fmt.Println(1) //1
      	case "world":
      		fmt.Println(2)
      	default:
      		fmt.Println(0)
      	
      
  • 使用方法

    • 一分支多值,当出现多个 case 要放在一起的时候,可以写成下面这样

      var a = "hello"
      switch a 
      case "world", "hello":
      	fmt.Println(1) //1
      default:
      	fmt.Println(0)
      
      
    • 分支表达式,case 后不仅仅只是常量,还可以和 if 一样添加表达式(这种情况的 switch 后面不再需要跟判断变量)

      	var r int = 11
      	switch 
      	case r > 10 && r < 20:
      		fmt.Println(r) //11
      	
      
    • 跨越 case 的 fallthrough——兼容C语言的 case 设计(使用此关键字后,case和C中一样可以进行穿透)

      var s = "hello"
      switch 
      case s == "hello":
          fmt.Println("hello")
          fallthrough
      case s != "world":
          fmt.Println("world")
      
      //hello
      //world
      

四、使用goto退出多层循环

  • 传统退出多层循环的方式

    	flag := false
    	for i := 0; i < 10; i++ 
    		for j := 0; j < 10; j++ 
    			fmt.Println(i, j)
    			if j == 1 
    				flag = true
    				break
    			
    		
    		if flag 
    			break
    		
    	
    
  • goto退出多层循环

    	for i := 0; i < 10; i++ 
    		for j := 0; j < 10; j++ 
    			fmt.Println(i, j)
    			if j == 1 
    				goto breakHere
    			
    		
    	
    breakHere: //goto标签
    	fmt.Println("done")
    
  • 不建议在程序之中出现goto语句,跳出多层循环可以采用标签的方法

    flag:
    	for i := 0; i < 10; i++ 
    		for j := 0; j < 10; j++ 
    			fmt.Println(i, j)
    			if j == 1 
    				break flag //结束外层循环,也就是停止循环
    			
    		
    	
    

go语言系列-03-流程控制语句(代码片段)

Go语言流程控制语句Go语言中最常用的流程控制语句有if和for,没有像Python中的while语句。另外,Go语言还有switch和goto语句,不过这两个主要是用来简化代码的,属于扩展类的流程控制,使用率没有if和for多。if语句if语句的基本格... 查看详情

go语言中的流程控制(代码片段)

1概述Go语言提供了条件分支if,状态分支switch,循环for,跳转goto,延迟执行defer,这些流程控制语句。分别作说明如下:2条件分支if依据条件是否满足确定执行哪个分支。语法:if条件1分支1elseif条件2分支2elseif条件...分支...else分... 查看详情

go语言基础之流程控制(代码片段)

流程控制是每种编程语言控制逻辑走向和执行次序的重要部分,流程控制可以说是一门语言的“经脉”。Go语言中最常用的流程控制有if和for,而switch和goto主要是为了简化代码、降低重复代码而生的结构,属于扩展类的流程控制... 查看详情

go语言流程控制(代码片段)

...)三、switchcase语句四、使用goto退出多层循环一、forGo语言中的循环语句只支持for关键字,而不支持while和do-while结构,关键字for的基本使用方法与C语言和C++中非常接近for后面的条件表达式不需要用圆括号()括起... 查看详情

go语言初体验(流程控制range遍历函数结构体面向对象)(代码片段)

一、流程控制//mainpackagemainimport("fmt")funcmain()x:=2switchxcase1:fmt.Print("beifeng1")case2:fallthroughcase3:fmt.Print("beifeng2")default:fmt.Print("beifeng3")二、range遍历//main.gopackagemainimport("fm 查看详情

go语言-golang基础-流程控制(代码片段)

1流程控制程序设计语言的流程控制语句,用于设定计算执行的次序,建立程序的逻辑结构。可以说,流程控制语句是整个程序的骨架。从根本上讲,流程控制只是为了控制程序语句的执行顺序,一般需要与各种条件配合,因此... 查看详情

go基础系列:流程控制结构(代码片段)

...ch结构(以及select)continue:进入下一次for迭代虽然Go是类C的语言,但Go在这些流程控制语句中的条件表达式部分不使用括号。甚至有些时候使用括号会报错,但有些复杂的条件判断需要使用括号改变优先级。如:if(name=="longshuai&... 查看详情

golang入门到项目实战|go语言中的流程控制(代码片段)

go语言中的条件条件语句是用来判断给定的条件是否满足(表达式值是否为true或者false),并根据判断的结果(真或假)决定执行的语句,go语言中的条件语句也是这样的。go语言中的条件语句包含如下几种情况if语句:if语... 查看详情

golangbasic_leaming3流程控制(代码片段)

阅读目录Go语言ifelse(条件判断)Go语言ifelse条件判断代码示例if的特殊写法Go语言for(循环)for循环-初始语句for循环-条件表达式1更美观的死循环写法2只有一个条件的for循环for循环-结束语句Go语言forrange(键值循环)forrange遍历... 查看详情

go语言流程控制(代码片段)

Go语言流程控制ifelse(分支结构)if表达式1分支1elseif表达式2分支2else分支3packagemainimport"fmt"//if条件判断funcmain()age:=19ifage>18fmt.Println("123")elsefmt.Println("456")//多个判断条件ifage>35fmt.Println("111")elseifage>18fmt.Println("222")elsefmt.Println("33... 查看详情

go语言基础:运算符_流程控制循环_数组_切片(代码片段)

文章目录运算符算数运算符关系运算符位运算符逻辑运算符赋值运算符流程控制if语句for循环forrange键值循环Swith语句goto跳转(不常用)break和continue数组数组定义数组初始化直接/一般初始化部分/默认值初始化不确定初始... 查看详情

go语言基础:运算符_流程控制循环_数组_切片(代码片段)

文章目录运算符算数运算符关系运算符位运算符逻辑运算符赋值运算符流程控制if语句for循环forrange键值循环Swith语句goto跳转(不常用)break和continue数组数组定义数组初始化直接/一般初始化部分/默认值初始化不确定初始... 查看详情

golangbasic_leaming3流程控制(代码片段)

阅读目录Go语言ifelse(条件判断)Go语言ifelse条件判断代码示例if的特殊写法Go语言for(循环)for循环-初始语句for循环-条件表达式1更美观的死循环写法2只有一个条件的for循环for循环-结束语句Go语言forrange(键值循环)forrange遍历... 查看详情

go语言入门-流程控制(代码片段)

go流程控制字符串详解字符串原理字符串底层就是一个byte数组,所以可以和[]byte类型互相转换字符串中的字符是不能修改的字符串是有byte字节组成,所以字符串的长度是byte字节的长度rune类型(int32占四个字节)用来表示utf8字符,... 查看详情

go语言学习笔记—基础—控制流:流程控制

控制程序的逻辑走向和执行次序经脉编程语言的流程控制有if和for,而switch和goto主要是为了简化代码、降低重复代码而生的结构,属于扩展类的流程控制分支语句(if和switch)、循环语句(for)和跳转语句&... 查看详情

goweb编程实战----流程控制语句(代码片段)

...句一个分支多个值分支表达式goto语句流程控制语句每个语言都会介绍到流程控制语句,Go语言同样具有这些。比如分支结构if-else、for循环、for-range循环、switch-case语句、goto语句、break语句以及continue语句。下面,博主来分... 查看详情

go基础结构体和流程控制语句(代码片段)

...问与修改2.结构体指针3.结构体嵌套4.深拷贝与浅拷贝二、流程控制语句1.if2.switch3.for4.break与continue5.goto与Label一、结构体1.结构体创建、访问与修改定义结构体typeUserstructidintscorefloat32enrollmenttime.Timename,addrstring//多个字段类型相同... 查看详情

goweb编程实战----流程控制语句(代码片段)

...句一个分支多个值分支表达式goto语句流程控制语句每个语言都会介绍到流程控制语句,Go语言同样具有这些。比如分 查看详情