熊猫拍板砖

导航

Go学习之路 (三) 条件和循环

在go中,所有的循环都是for

package main
import(
  "fmt"
  "testing"
)

func TestFor(t *testing.T){
  n :=0
  for n < 5{
    fmt.Printf("这是第%d次循环\n",n)
    n++
  }
}

--------------------第二种循环--------------------------

package main
import(
  "fmt"
  "testing"
)

func TestFor(t *testing.T){
  
  for n :=0;n < 5;n++{
    fmt.Printf("这是第%d次循环\n",n)
  }
}

运行结果:

这是第0次循环
这是第1次循环
这是第2次循环
这是第3次循环
这是第4次循环

无限循环:

package main
import(
  "fmt"
  "testing"
)

func TestFor(t *testing.T){
  for true{
    fmt.Printf("这是无限循环\n")
  }
}

运行结果:

这是无限循环
这是无限循环
这是无限循环
...

条件语句

语句 描述
if 语句 if 语句 由一个布尔表达式后紧跟一个或多个语句组成。
if...else 语句 if 语句 后可以使用可选的 else 语句, else 语句中的表达式在布尔表达式为 false 时执行。
if 嵌套语句 你可以在 if 或 else if 语句中嵌入一个或多个 if 或 else if 语句。
switch 语句 switch 语句用于基于不同条件执行不同动作。
select 语句 select 语句类似于 switch 语句,但是select会随机执行一个可运行的case。如果没有case可运行,它将阻塞,直到有case可运行。
package main
import(
  "fmt"
  "testing"
)
func TestIf(t *testing.T){
  for a :=0; a<5; a++{
    if a ==1{
      fmt.Printf("这是1\n")
    }
    else if a==2{
      fmt.Printf("这是2\n")
    }
    else{
      fmt.Printf("这是闲的\n")
    }
  }
}

输出结果:

这是闲的
这是1
这是2
这是闲的
这是闲的

这里还有一种在if中调用其他函数的

package main
import(
  "fmt"
  "testing"
)
func TestMultiSec(t *testing.T){
  if v,err :=someFun(); err=nil {  //如果err为空,则执行第一个
    t.Log{"1==1"}
  }else{     //如果err不为空则执行这一条
    t.Log("1==1")
  }
}
  • nil这里是空,是Go中预留的变量,代表空

switch条件

与其他主要编程语言的差异

  • 条件表达式不限制为常量或者整数
  • 单个 case 中,可以出现多个结果选项,使用都好分隔;
  • 与 C 语言等规则相反, Go 语言不需要 break 来明确退出一个 case;
  • 可以不设定 switch 之后的条件表达式,在此种情况下,整个 switch 结构与多个 if...selse... 的逻辑作用等同
package main
import "testing"
func TestSwitchMultiCase(t *testing.T){
for i := 0; i < 5; i++ {
  switch i {
  case 0, 2:
    t.Log("Even")
  case 1, 3:
    t.Log("odd")
  default:
    t.Log("it is not 0-3")
   }

  }

}

运行结果:

   fib_test.go:93: Even
    fib_test.go:95: odd
    fib_test.go:93: Even
    fib_test.go:95: odd
    fib_test.go:97: it is not 0-3
package main
import "testing"
func TestSwitchMultiCase(t *testing.T){
for i := 0; i < 5; i++ {
  switch  {
  case i%2==0:
    t.Log("Even")
  case i%2==1:
    t.Log("odd")
  default:
    t.Log("unknow")
   }

  }

}

运行结果

   fib_test.go:93: Even
    fib_test.go:95: odd
    fib_test.go:93: Even
    fib_test.go:95: odd
    fib_test.go:97: unknow

posted on 2019-05-15 20:53  熊猫拍板砖  阅读(64)  评论(0)    收藏  举报