if else

基本格式

if 表达式1 {
	分支1
} else if 表达式2 {
	分支2
} else {
	分支3
}

条件中声明的变量,它的作用域为 if 判断中,这样声明可以有效节省内存

if age := 18; age > 35 {
	fmt.Println("中年")
} else if age >= 18 {
	fmt.Println("青壮年")
} else {
	fmt.Println("未成年")
}

fmt.Println(age) //报错,未声明age

 

for 循环

go 语言只存在一种循环

基本表达式

for 初始语句; 条件表达式; 结束语句 {
	循环体
}

同 if 一样,条件中声明的变量,它的作用域只再 for 循环

变种写法

1. 省略初始语句

num := 0
for ; num < 100; num++ {
	fmt.Printf("%d\n", num)
}

2.省略结束语句, 在循环体中实现结束语句

num := 0
for num < 100 {
	fmt.Printf("%d\n", num)
	num++
}

3.死循环

for {
	fmt.Println("")
}

for range

用以遍历数组、切片、字符串、map 以及通道 channel。通过 for range 遍历的返回值规律

  1. 数组,切片,字符串 返回索引和值
  2. map 返回 键和值
  3. 通道只返回通道内的值
str := "hello world"
for index, value := range str {
	fmt.Printf("index: %d, value: %c\n", index, value)
}

小练习

九九乘法表

for x := 1; x <= 9; x++ {
	for y := 1; y <= x; y++ {
		fmt.Printf("%d x %d = %d | ", x, y, x*y)
	}
	fmt.Println()
}

跳出、跳出 for 循环

跳出:break ,跳过 continue

for i := 0; i < 10; i++ {
	if i > 5 {
		break
	}
	fmt.Println(i)
}

for i := 0; i < 10; i++ {
	if i == 5 {
		continue
	}
	fmt.Println(i)
}

switch case

与 PHP 不同的是 GO 语言的 switch case 分支不需要 使用 break

switch variable {
	case value1:
	...dosomething
	case value2, value3:
	...dosomething
	case othervalue:
	...dosomething
	default:
	...dosomething
}
 
swith variable := value; variable {
	....
}

goto

执行指定标签后的代码, break 也可以接标签

n := 3

if n == 3 {
	goto tag1
}

fmt.Println("step 1")

tag1:
fmt.Println("setp 2")

以上直接输出 step2