流程控制
if-else
结构
switch
结构
格外注意的:一旦成功地匹配到每个分支,在执行完相应代码后就会退出整个 switch 代码块,也就是说您不需要特别使用 break 语句来表示结束,因此,程序也不会自动地去执行下一个分支的代码。 如果在执行完每个分支的代码后,还希望继续执行后续分支的代码,可以使用 fallthrough 关键字来达到目的。
select
结构
用于 channel
的选择
for (range)
结构
附录:代码
package main
import "fmt"
func main() {
//s := ifelse(99)
//fmt.Printf("%s\n", s)
//
//是 := switch1(10)
//fmt.Printf("%s\n", 是)
//forr()
forange()
}
// if-else 分支
func ifelse(int2 int) string {
if int2%2 == 1 {
return "奇数"
}
return "偶数"
}
// switch 分支
func switch1(int2 int) string {
int2 = int2 % 9
switch int2 {
case 1:
fmt.Printf("这个下面应该还有一个输出\n")
fallthrough
case 2:
return "晶晶"
case 3:
return "舒孝元"
default:
return "默认没找到"
}
}
// for 循环
func forr() {
//for i := 0; i < 5; i++ {
// fmt.Printf("for循环:%d\n", i)
//}
// 同时使用多个计数器
//var N = 10
//for i, j := 0, N; i < j; i, j = i+1, j-1 {
// fmt.Printf("i=%d,j=%d\n", i, j)
//}
var i = 5
for i >= 0 {
i = i - 1
fmt.Printf("打印i的值:%d\n", i)
}
for i := 0; i < 5; i++ {
var v int
fmt.Printf("%d ", v)
v = 5
}
// 没有结束条件,一直加下去
//for i := 0; ; i++ {
// fmt.Println("Value of i is now:", i)
//}
// 条件永远成立,输出 0
//for i := 0; i < 3; {
// fmt.Println("Value of i:", i)
//}
// 结束条件在循环里
//s := ""
//for ; s != "aaaaa"; {
// fmt.Println("Value of s:", s)
// s = s + "a"
//}
// 同时使用多个计数器
for i, j, s := 0, 5, "a"; i < 3 && j < 100 && s != "aaaaa"; i, j, s = i+1, j+1, s+"a" {
fmt.Println("Value of i, j, s:", i, j, s)
}
}
// for-range 结构,类似于 foreach
func forange() {
str := "Go is a beautiful language!"
fmt.Printf("The length of str is: %d\n", len(str))
for pos, char := range str {
fmt.Printf("Character on position %d is: %c \n", pos, char)
}
fmt.Println()
str2 := "Chinese: 日本語"
fmt.Printf("The length of str2 is: %d\n", len(str2))
for pos, char := range str2 {
fmt.Printf("character %c starts at byte position %d\n", char, pos)
}
fmt.Println()
fmt.Println("index int(rune) rune char bytes")
for index, rune := range str2 {
fmt.Printf("%-2d %d %U '%c' % X\n", index, rune, rune, rune, []byte(string(rune)))
}
}