条件判断
正常用法,和C语言不同,if后面不需要加括号
ten :=11
if ten>10{
}else{
}
特殊写法:
//Connect()是一个带有返回值的函数,err:=Connect()是一个语句。
//err!=nil才是if的判断表达式
if err:=Connect();err !=nil{
}
for
三种用法:
1.结束循环时带可执行语句的无限循环
var i int
//循环本身是无限循环
for ; ; i++{
//i>10就跳出
if i>10{
break
}
}
2.无限循环
for{
}
3.只有一个循环条件的循环
var i int
for i<=10{
i++
}
小示例:九九乘法表
package main
import (
"fmt"
)
func main() {
for i := 1; i <= 9; i++ {
for j := i; j <= 9; j++ {
fmt.Printf("%d*%d=%d", i, j, i*j)
}
fmt.Println()
}
}
输出:
分支选择switch
与C语言的不同:在Go语言中的switch不仅可以基于常量进行判断,还可以基于表达式进行判断。
基本写法:
Go语言的switch中 的每一个case和case间是独立的代码块,不需要通过break语句跳出当前case代码块以避免执行到下一行。
var a ="hello"
switch a{
case "hello":
fmt.Println(1)
case "world":
fmt.Println(2)
default:
fmt.Println(0)
}
一分支多值:
var a ="mum"
switch a{
case "mum","daddy":
fmt.Println("family")
}
分支表达式:
var r int =11
switch{
case r>10&&r<20
fmt.Println(r)
}
注意:switch后面不再跟判断变量,连判断的目标都没有了。
fallthrough:
如果想让go语言的case像c语言那样,执行完当前case紧接着执行下一个,需要用到fallthrough关键字。
goto
goto语句可以在代码间无条件的跳转。
使用goto集中处理错误:
package main
import (
"fmt"
)
func main() {
for x := 0; x < 10; x++ {
for y := 0; y < 10; y++ {
if y == 2 {
//跳转到标签
goto breakHear
}
}
}
//手动返回,避免执行进入标签
return
//标签
breakHear:
fmt.Println("done")
}
break和continue
这两个不多介绍。break可以跳出多层循环。continue结束当前循环,继续下一次循环。