switch的例子:

switch coinflip() {
case "heads":
  heads++
case "tails":
  tails++
default:
  fmt.Println("landed on edge!")
}

  

例子里的coinflip函数返回几种不同的结果,每一个case都会对应一个返
回结果,这里需要注意,Go语言并不需要显式地在每一个case后写break,语言默认执行完
case后的逻辑语句会自动退出。当然了,如果你想要相邻的几个case都执行同一逻辑的话,
需要自己显式地写上一个fallthrough语句来覆盖这种默认行为。不过fallthrough语句在一般的
程序中很少用到。

Go语言里的switch还可以不带操作对象(译注:switch不带操作对象时默认用true值代替,然
后将每个case的表达式和true值进行比较);可以直接罗列多种条件,像其它语言里面的多个
if else一样,下面是一个例子:

func Signum(x int) int {
switch {
  case x > 0:
  return +1
default:
  return 0
case x < 0:
  return -1
  }
}

这种形式叫做无tag switch(tagless switch);这和switch true是等价的。
像for和if控制语句一样,switch也可以紧跟一个简短的变量声明,一个自增表达式、赋值语
句,或者一个函数调用(译注:比其它语言丰富)。

break和continue语句会改变控制流。和其它语言中的break和continue一样,break会中断当
前的循环,并开始执行循环之后的内容,而continue会中跳过当前循环,并开始执行下一次循
环。这两个语句除了可以控制for循环,还可以用来控制switch和select语句

,continue会跳过内层的循环,如果我们想跳过的是更外层的循环的话,我
们可以在相应的位置加上label,这样break和continue就可以根据我们的想法来continue和
break任意循环。这看起来甚至有点像goto语句的作用了。当然,一般程序员也不会用到这种
操作。这两种行为更多地被用到机器生成的代码中。

你可以在 https://golang.org/pkg 和 https://godoc.org 中找到标准库和社区
写的package。

  

golang学习笔记 --switch的更多相关文章

  1. golang学习笔记20 一道考察对并发多协程操作一个共享变量的面试题

    golang学习笔记20 一道考察对并发多协程操作一个共享变量的面试题 下面这个程序运行的能num结果是什么? package main import ( "fmt" " ...

  2. golang学习笔记19 用Golang实现以太坊代币转账

    golang学习笔记19 用Golang实现以太坊代币转账 在以太坊区块链中,我们称代币为Token,是以太坊区块链中每个人都可以任意发行的数字资产.并且它必须是遵循erc20标准的,至于erc20标 ...

  3. golang学习笔记18 用go语言编写移动端sdk和app开发gomobile

    golang学习笔记18 用go语言编写移动端sdk和app开发gomobile gomobile的使用-用go语言编写移动端sdk和app开发https://blog.csdn.net/u01249 ...

  4. golang学习笔记17 爬虫技术路线图,python,java,nodejs,go语言,scrapy主流框架介绍

    golang学习笔记17 爬虫技术路线图,python,java,nodejs,go语言,scrapy主流框架介绍 go语言爬虫框架:gocolly/colly,goquery,colly,chrom ...

  5. golang学习笔记16 beego orm 数据库操作

    golang学习笔记16 beego orm 数据库操作 beego ORM 是一个强大的 Go 语言 ORM 框架.她的灵感主要来自 Django ORM 和 SQLAlchemy. 目前该框架仍处 ...

  6. golang学习笔记14 golang substring 截取字符串

    golang学习笔记14 golang substring 截取字符串golang 没有java那样的substring函数,但支持直接根据 index 截取字符串mystr := "hel ...

  7. golang学习笔记13 Golang 类型转换整理 go语言string、int、int64、float64、complex 互相转换

    golang学习笔记13 Golang 类型转换整理 go语言string.int.int64.float64.complex 互相转换 #string到intint,err:=strconv.Ato ...

  8. golang学习笔记12 beego table name `xxx` repeat register, must be unique 错误问题

    golang学习笔记12 beego table name `xxx` repeat register, must be unique 错误问题 今天测试了重新建一个项目生成新的表,然后复制到旧的项目 ...

  9. golang学习笔记11 golang要用jetbrain的golang这个IDE工具开发才好

    golang学习笔记11   golang要用jetbrain的golang这个IDE工具开发才好  jetbrain家的全套ide都很好用,一定要dark背景风格才装B   从File-->s ...

随机推荐

  1. OpenGL ES 3.0之Uniform详解

    Uniform是变量类型的一种修饰符,是OpenGL ES  中被着色器中的常量值,使用存储各种着色器需要的数据,例如:转换矩阵.光照参数或者颜色. uniform 的空间被顶点着色器和片段着色器分享 ...

  2. .Net 如何实现 LINQ~

    本文内容 引入 实现 LINQ 的两个前提 扩展方法 λ 表达式 LINQ 参考资料 本文说明 LINQ 是如何实现的,知道这点,才能更好地使用它~ 如果你刚接触 LINQ,那么可能不会那么快就理解. ...

  3. Discuz常见小问题-如何批量加精,置顶帖子

    批量选中帖子,然后置顶和精华都可以勾选 完成之后的效果

  4. 使用Visual Studio Code调试React Native报错

    报错信息: [Error] Error: Unknown error: not all success patterns were matched. It means that "react ...

  5. Github 基本操作

    .配置Git 首先在本地创建ssh key:$ ssh-keygen -t rsa -C "your_email@youremail.com" 后面的your_email@your ...

  6. JavaScript常用设计模式

    单例模式:确保类只能被实例化一次. var obj = {} 2.函数返回值 var func = function () {return {}} var obj = func(); 3.构造函数初始 ...

  7. asp.net判断文件或文件夹是否存在

    在上传文件时经常要判断文件夹是否存在,如果存在就上传文件,否则新建文件夹再上传文件 判断语句为 if (System.IO.Directory.Exists(Server.MapPath(" ...

  8. 2019微信公开课Pro微信之夜内容笔记总结

    2019微信公开课Pro 微信之夜内容笔记总结 小程序入口 我的小程序 任务栏入口 线下扫码 搜索小程序 附近小程序升级 用户留存问题 小程序成长 关注用户需求 性能监控   广告主&& ...

  9. Java中equals()和hashCode()的关系以及重写equals()和hashCode()的重要性

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6580647.html  一:关系 如果两个对象相等(equal),它们的hashcode一定相同: 如果两个对 ...

  10. linux下切换python2和python3(转)

    0x00 为什么需要有两个版本的Python Python2和Python3不兼容是每个接触过Python的开发者都知道的事,虽说Python3是未来,但是仍然有很多项目采用Python2开发.Lin ...