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 嵌套语句 你可以在 ifelse if 语句中嵌入一个或多个 ifelse 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
这是闲的
这是闲的

无限循环

package main
import(
  "fmt"
  "testing"
)
func TestFor(t *testing.T){
  n :=0
  for {
   n++
    if n == 10{
      break
    }
  }
}

这里还有一种在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

你可能感兴趣的:(Go学习之路 (三) 条件和循环)