If / else分支判断
if condition1 {
}
if condition1 {
} else {
}
if condition1 {
} else if condition2 {
} else if condition3 {
} else {
}
练习
package main
import “fmt”
func main() {
bool1 := true
if bool1 {
fmt.Printf(“The value is true
”)
} else {
fmt.Printf(“The value is false
”)
}
}
练习
// 写一个程序, 从终端读取输入, 并转成整数. 如果转成整数出错,
// 则输出'can not convert to int', 并返回.否则输出该整数
package main
import (
"fmt"
"strconv"
)
func main() {
var s string
fmt.Scanf("%s", &s)
res, err := strconv.Atoi(s)
if err != nil {
fmt.Println("can not convert to int.err: ", err)
return
}
fmt.Println(res)
}
switch case语句
写法1
switch var {
case var1:
case var2:
case var3:
default:
}
写法2
var i = 0
switch i {
case 0:
case 1:
fmt.Println(“1”)
case 2:
fmt.Println(“2”)
default:
fmt.Println(“def”)
}
写法3
fallthrough:Go里面switch默认相当于每个case最后带有break,匹配成功后不会自动向下执行其他case,而是跳出整个switch, 但是可以使用fallthrough强制执行下面的的case代码。
var i = 0
switch i {
case 0:
fallthrough
case 1:
fmt.Println(“1”)
case 2:
fmt.Println(“2”)
default:
fmt.Println(“def”)
}
写法4
var i = 0
switch i {
case 0, 1:
fmt.Println(“1”)
case 2:
fmt.Println(“2”)
default:
fmt.Println(“def”)
}
写法5
var i = 0
switch {
condition1:
fmt.Println(“i > 0 and i < 10”)
condition2:
fmt.Println(“i > 10 and i < 20”)
default:
fmt.Println(“def”)
}
var i = 0
switch {
case i > 0 && i < 10:
fmt.Println(“i > 0 and i < 10”)
case i > 10 && i < 20:
fmt.Println(“i > 10 and i < 20”)
default:
fmt.Println(“def”)
}
写法6
switch i := 0 {
case i > 0 && i < 10:
fmt.Println(“i > 0 and i < 10”)
case i > 10 && i < 20:
fmt.Println(“i > 10 and i < 20”)
default:
fmt.Println(“def”)
}
for 语句
写法1
for 初始化语句; 条件判断; 变量修改 {
}
for i := 0 ; i < 100; i++ {
fmt.Printf(“i=%d
”, i)
}
写法2
for 条件 {
}
for i > 0 {
fmt.Println(“i > 0”)
}
for true {
fmt.Println(“i > 0”)
}
for {
fmt.Println(“i > 0”)
}
写法3
for range 语句 用来遍历数组、slice、map、chan
str := “hello world,中国”
for i, v := range str {
fmt.Printf(“index[%d] val[%c] len[%d]
”, i, v, len([]byte(v)))
}
写法4
break continue语句
str := “hello world,中国”
for i, v := range str {
if i > 2 {
continue
}
if (i > 3) {
break }
fmt.Printf(“index[%d] val[%c] len[%d]
”, i, v, len([]byte(v)))
}
写法5
goto 和 label 语句
package main
import "fmt"
func main() {
LABEL1:
for i := 0; i <= 5; i++ {
for j := 0; j <= 5; j++ {
if j == 4 {
continue LABEL1
}
fmt.Printf("i is: %d, and j is: %d
", i, j)
}
}
}
package main
func main() {
i := 0
HERE:
print(i)
i++
if i == 5 {
return
}
goto HERE
}
练习
i := 0for {
if i >= 3 {
break
}
fmt.Println(“”, i)
i++;
}
for i := 0; i<7 ; i++ { if i%2 == 0 {
continue
}
fmt.Println(i)
}