1 条件语句: if, else if, else
   特殊用法:判断num是奇是偶;其中局部变量num只能在该if...else语句中使用!

  1. if num := 10; num % 2 == 0 {
  2. fmt.Println(num, "is even.") //偶
  3. } else {
  4. fmt.Println(num, "is odd.") //奇
  5. }

2 switch语句,以下是其在Go中所有特殊用法及说明:

  1. switch x := 5; x{ //switch后可以没有表达式!
  2. default:
  3. fmt.Println(x) //default项并不一定放在最后位置(可以省略),其作用是
  4. //当所有case都匹配失败后,自动匹配default.
  5. case 5:
  6. x += 10
  7. fmt.Println(x)
  8. fallthrough //Go中默认每个case后都自带一个break;
  9. //如果想要匹配成功后还继续执行下面的case,
  10. //则需要在此case的最后一行加上fallthrough
  11. case 6,7,8: //一个case后可以跟多个值
  12. x += 20
  13. fmt.Println(x)
  14. case : //case后的表达式可以省略,认为是switch true,(为啥我省略的就ERROR!)
  15. //并且每个case表达式都被计算为true,并执行相应的代码块。
  16. x += 30
  17. fmt.Println("哈哈")
  18. }

type-switch: switch也可以被用来判断某个interface变量中实际存储的变量类型

  1. var x interface{}
  2. switch x.(type) { //switch i := x.(type)
  3. case type1:
  4. 语句1
  5. case type2:
  6. 语句2
  7. }

3 select 语句 (类似于switch语句)

  1. var c1, c2, c3 chan int
  2. var i1, i2 int
  3.  
  4. select {
  5. case i1 = <- c1:
  6. fmt.Printf("Received ", i1, "from c1\n")
  7. case c2 <- i2:
  8. fmt.Printf("Sent ", i2, "to c2\n")
  9. case i3, ok := (<- c3): //i3, ok := <- c3
  10. if ok {
  11. fmt.Printf("Received ", i3, "from c3\n")
  12. } else {
  13. fmt.Printf("c3 is closed\n")
  14. }
  15. default:
  16. fmt.Printf("No communication.\n")
  17. }

每个case都必须是一个通信!所有channel表达式和被发送的都会被求值!    
如果某个通信可以进行,则执行,其他case就被忽略。如果多个case都可执行,则会随机公平地选出一个执行!
否则:如果有default语句,则执行default;如果没有default,则select将阻塞,直到某个通信可以执行!
    
4 循环语句: for是唯一的循环语句!且for循环中的初始化语句、条件判断语句和条件改变语句都是可选的。

  1. for i := 0; i <= 10; i++{
  2. fmt.Printf(" %d", i)
  3. }

for循环的range格式可以对slice、map、数组和字符串等进行循环迭代:

  1. for key, value := range oldMap {
  2. newMap[key] = value //数组复制。。。。。。
  3. }

*跳出循环: break, continue, goto( 使用goto + 自定义标识符,可以无条件地转到以该标识符开头的行!)

Go语言学习笔记(3)——分支、循环结构的更多相关文章

  1. Go语言学习笔记六: 循环语句

    Go语言学习笔记六: 循环语句 今天学了一个格式化代码的命令:gofmt -w chapter6.go for循环 for循环有3种形式: for init; condition; increment ...

  2. Bash脚本编程学习笔记07:循环结构体

    本篇中涉及到算术运算,使用了$[]这种我未在官方手册中见到的用法,但是确实可用的,在此前的博文<Bash脚本编程学习笔记03:算术运算>中我有说明不要使用,不过自己忘记了.大家还是尽量使用 ...

  3. PYTHON 100days学习笔记004:循环结构

    目录 Day04 - 循环结构 1. 循环结构的应用场景 2.for-in循环 3. while循环 4. 练习 4.1 输入一个数判断是不是素数. 4.2 输入两个正整数,计算最大公约数和最小公倍数 ...

  4. 51单片机C语言学习笔记3: 存储器结构

    MCS-51单片机在物理结构上有四个存储空间: 1.片内程序存储器2.片外程序存储器3.片内数据存储器4.片外数据存储器 但在逻辑上,即从用户的角度上,8051单片机有三个存储空间: 1.片内外统一编 ...

  5. Go语言学习笔记(四)结构体struct & 接口Interface & 反射

    加 Golang学习 QQ群共同学习进步成家立业工作 ^-^ 群号:96933959 结构体struct struct 用来自定义复杂数据结构,可以包含多个字段(属性),可以嵌套: go中的struc ...

  6. Go语言学习笔记(四)结构体struct & 接口Interface & 反射reflect

    加 Golang学习 QQ群共同学习进步成家立业工作 ^-^ 群号:96933959 结构体struct struct 用来自定义复杂数据结构,可以包含多个字段(属性),可以嵌套: go中的struc ...

  7. 吴裕雄--天生自然C++语言学习笔记:C++ 循环

    有的时候,可能需要多次执行同一块代码.一般情况下,语句是顺序执行的:函数中的第一个语句先执行,接着是第二个语句,依此类推. 编程语言提供了允许更为复杂的执行路径的多种控制结构. 循环语句允许我们多次执 ...

  8. c语言学习笔记(10)——结构体

    ------------------------------------------------------------------ # include <stdio.h> struct ...

  9. Go语言学习笔记(8)——包和结构体

    包 —— 每个可执行的应用程序必须包含一个主函数,它是执行的入口点.主函数应该存在main包中. 结构体: 通过 . 操作符访问结构体的各个成员! 1. 定义结构体类型person: type per ...

随机推荐

  1. 2018.08.19 NOIP模拟 change(简单模拟)

    Change 题目背景 SOURCE:NOIP2015-SHY-10 题目描述 Alice 和 Bob 又聚在一起了!他们已经厌倦了取石子游戏,现在他们热衷于切题.于是,Alice 找到了一道题让 B ...

  2. Django介绍(3)

    https://www.cnblogs.com/yuanchenqi/articles/5786089.html

  3. HDU 3247 Resource Archiver (AC自动机+BFS+状压DP)

    题意:给定 n 个文本串,m个病毒串,文本串重叠部分可以合并,但合并后不能含有病毒串,问所有文本串合并后最短多长. 析:先把所有的文本串和病毒都插入到AC自动机上,不过标记不一样,可以给病毒标记-1, ...

  4. HDU 4355 Party All the Time (三分求极值)

    题意:给定x轴上有n个点,每一个点都有一个权值,让在x轴上选一个点,求出各点到这个点的距离的三次方乘以权值最小. 析:首先一开始我根本不会三分,也并没有看出来这是一个三分的题目的,学长说这是一个三分的 ...

  5. cxf-rs client 调用

    org.apache.cxf.jaxrs.client.WebClient get调用 @GET @Path("/echo/{input}") @Produces("te ...

  6. ESP32应用程序的内存布局

    应用程序内存布局 ESP32芯片具有灵活的内存映射功能.本节介绍ESP-IDF在默认情况下如何使用这些功能. ESP-IDF中的应用程序代码可以放置在以下内存区域之一中. IRAM(指令RAM) ES ...

  7. 无限存储之胖文本数据库TTD(Thick Text Database)

    无限存储之胖文本数据库TTD(Thick Text Database) 阅读:  评论:  作者:Rybby  日期:  来源:rybby.com 所谓的“胖”就是多.大.丰富的意思,像我们平时看到的 ...

  8. LoadRunner 技巧之 IP欺骗 (推荐)

    IP欺骗也是也loadrunner自带的一个非常有用的功能. 需要使用ip欺骗的原因:1.当某个IP的访问过于频繁,或者访问量过大是,服务器会拒绝访问请求,这时候通过IP欺骗可以增加访问频率和访问量, ...

  9. 8086汇编语言(1)虚拟机安装ms-dos 7.1

    8086汇编语言(1)虚拟机安装ms-dos 7.1 文/玄魂 前言 在开始这一系列文章之前,我想先说下,对于古董级的8086汇编到底还以有没有学习的必要.这里我说下我要从8086开始学习,而不是从w ...

  10. Cocos2d-三维拾取Ray-AABB碰撞检测算法【转】

    1.三维拾取技术 在3D游戏中通常会有这样的需求,用户可以选取3D世界中的某些物体进行如拖拽等操作,这时便需要程序通过将二维屏幕上的点坐标转换为三维世界中的坐标,并进行比对,这个过程就需要用到三维拾取 ...