一、递增递减语句
控制整数自身的增加和减少
++ 自增
-- 自减
package main
import "fmt"
func main() {
a := 1
a++
fmt.Println(a)
a--
fmt.Println(a)
}
备注:没有 ++a、--a
二、条件语句
if 后面的条件没有括号
if 的条件里可以赋值
if 的条件里赋值的变量作用域就在这个 if 语句里
package main
import (
"fmt"
"math/rand"
)
func main() {
a := rand.Int()
if a > 0 {
fmt.Println("大于0")
} else if a == 0 {
fmt.Println("等于0")
} else {
fmt.Println("小于0")
}
}
三、选择语句
switch 会自动 break,除非使用 fallthrough
switch 后可以没有表达式
package main
import (
"fmt"
)
func main() {
fmt.Println(
grade(0),
grade(59),
grade(60),
grade(82),
grade(99),
grade(100),
)
}
func grade(score int) string {
g := ""
switch {
case score < 0 || score > 100:
panic(fmt.Sprintf("Wrong score: %d", score))
case score < 60:
g = "F"
case score < 80:
g = "C"
case score < 90:
g = "B"
case score <= 100:
g = "A"
}
return g
}
四、循环语句
for 的条件里不需要括号
package main
import (
"fmt"
)
func main() {
fmt.Println(sum())
}
func sum() int {
sum := 0
for i := 1; i <= 100; i++ {
sum += i
}
return sum
}
没有 while
for 的条件里可以省略初始条件(相当于 while),结束条件,递增表达式
package main
import (
"fmt"
)
func main() {
a := 0
for a < 10 {
a++
fmt.Println(a)
}
}
无限循环
package main
import (
"fmt"
)
func main() {
for{
fmt.Println("abc")
}
}
五、跳转语句
break 与 continue 配合标签可用于多层循环嵌套的跳出
goto 是调整执行位置,与其他 2 个语句配合标签的结果并不相同
package main
import (
"fmt"
)
func main() {
a := 0
A:
for a < 10 {
a++
fmt.Println(a)
if a == 5 {
break A
goto B
}
}
B:
fmt.Println("B")
}