Golang 流程控制(if、switch)

if判断

if

示例:

package main

import "fmt"

func main() {

	var yes string
	fmt.Print("有没有卖西瓜的:")
	fmt.Scan(&yes)

	fmt.Print("老婆的想法:买十个包子")
	if yes == "y" || yes == "yes" || yes == "Y" || yes == "YES" {
		fmt.Println("和一个西瓜")
	}

	fmt.Println("老公的想法:")
	if yes == "y" || yes == "yes" || yes == "Y" || yes == "YES" {
		fmt.Println("买一个包子")
	} else {
		fmt.Println("买十个包子")
	}
}

标 准 输 出 : \color{#FF0000}{标准输出:} 标准输出:

F:\GO>go run f:\go\Process.go
有没有卖西瓜的:y
老婆的想法:买十个包子和一个西瓜
老公的想法:
买一个包子

F:\GO>go run f:\go\Process.go
有没有卖西瓜的:n
老婆的想法:买十个包子老公的想法:
买十个包子

elas if

示例:

package main

import "fmt"

func main() {
	fmt.Print("你的成绩是:")
	var num int
	fmt.Scan(&num)
	if num > 90 {
		fmt.Println("A")
	}	else if num >= 80 {
		fmt.Println("B")
	}	else if num >= 70 {
		fmt.Println("C")
	}	else if num >= 60 {
		fmt.Println("D")
	}	else {
		fmt.Println("不及格")
	}
}

标 准 输 出 : \color{#FF0000}{标准输出:} 标准输出:

你的成绩是:99
A

switch

单值判断

package main

import (
	"fmt"
)

func main() {
	var yes string
	fmt.Print("有没有卖西瓜的:")
	fmt.Scan(&yes)

	fmt.Print("老婆的想法:买十个包子")
	switch yes {
		case "y", "Y" :
			fmt.Println("和一个西瓜")
	}

	fmt.Println("老公的想法:")
	switch yes {
		case "y", "Y" :
			fmt.Println("买一个包子")
		default:
			fmt.Println("买十个包子")
	}
}

标 准 输 出 : \color{#FF0000}{标准输出:} 标准输出:

有没有卖西瓜的:y
老婆的想法:买十个包子和一个西瓜
老公的想法:
买一个包子

多值

package main

import (
	"fmt"
)

func main()  {
	fmt.Print("你的成绩是:")
	var num int
	fmt.Scan(&num)
	switch  {
		case num > 90:
			fmt.Println("A")
		case num >= 80:
			fmt.Println("B")
		case num >= 70:
			fmt.Println("C")
		case num >= 60:
			fmt.Println("D")
	default:
		fmt.Println("不及格")
	}
}

标 准 输 出 : \color{#FF0000}{标准输出:} 标准输出:

你的成绩是:99
A

fot循环

for 循环

方法一

package main

import "fmt"

func main()  {
	//索引:记录已经加到了多少
	//记录结果
	
	result := 0

	//初始化子语句;条件子语句;后置子语句
	for i :=1 ; i <= 100 ; i++{
		result += i
	}
	fmt.Println(result)
}

标 准 输 出 : \color{#FF0000}{标准输出:} 标准输出:

5050

方法二

package main

import "fmt"

func main()  {
result := 0
	i := 0

	for i <= 100 {
		result += i
		i ++
	}
	fmt.Println(result)
}

标 准 输 出 : \color{#FF0000}{标准输出:} 标准输出:

5050

死循环

package main

import (
	"fmt"
)

func main()  {
	i := 0
	for {
		fmt.Println(i)
	}
}

标 准 输 出 : \color{#FF0000}{标准输出:} 标准输出:

0
0
··· ···
0

for range

package main

import "fmt"

func main()  {
	desc := "我爱中国"
	//i := 0
	for i , ch := range desc {
		fmt.Printf("%d, %T, %q\n", i, ch ,ch)
		i ++
	}
}

标 准 输 出 : \color{#FF0000}{标准输出:} 标准输出:

0, int32, '我'
3, int32, '爱'
6, int32, '中'
9, int32, '国'

continue、break

  • continue:结束本次循环进行下次循环
  • break:结束循环
import (
	"fmt"
)

func main() {
	fmt.Println("----continue----")
	for i := 0 ; i <= 5 ; i++ {
		if i == 4 {
			continue
			//跳出本次循环,进行下一次循环
		}
		fmt.Println(i)
	}
	fmt.Println("----break----")
	for i := 0 ; i <= 5 ; i++ {
		if i == 4 {
			break
			//终止循环
		}
		fmt.Println(i)
	}
}

标 准 输 出 : \color{#FF0000}{标准输出:} 标准输出:

----continue----
0
1
2
3
5
----break----
0
1
2
3

goto

goto打印1+2+3+…100

package main

import "fmt"

func main() {
	result, i := 0, 0
START:
	if i > 100 {
		goto FOREND
	}
	result += i
	i ++
	goto START
FOREND:
	fmt.Println(result)
}

标 准 输 出 : \color{#FF0000}{标准输出:} 标准输出:

5050

跳转

package main

import "fmt"

func main() {
	fmt.Print("有没有卖西瓜的:")
	var yes string
	fmt.Scan(&yes)
	fmt.Print("老婆的想法:买十个包子")
	if yes != "Y" && yes != "y" {
		goto  END
	}
	fmt.Print("和一个西瓜!")
END:

标 准 输 出 : \color{#FF0000}{标准输出:} 标准输出:

F:\GO>go run f:\go\goto.go
有没有卖西瓜的:y
老婆的想法:买十个包子和一个西瓜!
F:\GO>go run f:\go\goto.go
有没有卖西瓜的:n
老婆的想法:买十个包子

break跳转

  • 跳转标签需要定义在循环体前面
package main

import "fmt"

func main() {
BREAKEND:
	for i := 0  ; i < 3 ; i++  {
		for j := 0 ; j < 3 ; j++ {
			if i * j == 4 {
				break BREAKEND
			}
			fmt.Println(i, j , i * j)
		}
	}
}

标 准 输 出 : \color{#FF0000}{标准输出:} 标准输出:

0 0 0
0 1 0
0 2 0
1 0 0
1 1 1
1 2 2
2 0 0
2 1 2
package main

import (
	"fmt"
)

func main() {
	var j,i = 1,1
		for  j <= 9 {
			if i == j {
				fmt.Printf("%v %v %v %v %v\t", i, "*", j, "=", i*j)
				j++
				//fmt.Print(i,j)
			} else if i < j {
				fmt.Printf("%v %v %v %v %v\t", i, "*", j, "=", i*j)
				i++
				//fmt.Println(i,j)
			}
		}
}

练习
打印乘法口诀

package main

import "fmt"

func main() {
	for i :=1 ; i < 10 ; i ++ {
		for j :=1 ; j < 10 ; j++ {
			fmt.Print(j, "*",i , "=", i * j, "\t")
			if i == j {
				fmt.Println()
				break
			}

		}
	}
}

标 准 输 出 : \color{#FF0000}{标准输出:} 标准输出:

1*1=1
1*2=2   2*2=4
1*3=3   2*3=6   3*3=9
1*4=4   2*4=8   3*4=12  4*4=16
1*5=5   2*5=10  3*5=15  4*5=20  5*5=25
1*6=6   2*6=12  3*6=18  4*6=24  5*6=30  6*6=36
1*7=7   2*7=14  3*7=21  4*7=28  5*7=35  6*7=42  7*7=49
1*8=8   2*8=16  3*8=24  4*8=32  5*8=40  6*8=48  7*8=56  8*8=64
1*9=9   2*9=18  3*9=27  4*9=36  5*9=45  6*9=54  7*9=63  8*9=72  9*9=81