golang学习笔记 --switch

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。

 

  

posted on 2018-11-21 11:37  清明-心若淡定  阅读(586)  评论(0编辑  收藏  举报