都没有了小 ()
!
if
- 没有了小
()
if 表达式{
...
}else if 表达式{
...
}else{
...
}
- if后可以创建变量,再判断:但这样
err
变量只在if范围内
if err := Connect(); err != nil{
fmt.Println(err)
return
}
for
- 没有了
()
,但同样:语句可以不写,但;
要写!!!
for 初始语句;条件表达式;结束语句{
...
}
- 但死循环 和 只有条件表达式时 可以省略两个
;
:
for {
...
}
for true {
}
- 结束循环标志
break
、goto
、return
、panic
for range:键值循环
适用:
- 数组、切片、字符串返回索引和值。
- map返回键和值。
- 通道(channel)只返回通道内的值!【循环通道,不断地从中取数据,直到通道被关闭!】
switch:分支选择
- Go中的
switch
中数字、整型、表达式都可以了! - 多
case
合并! switch
不再用break了!!(拓展:每个case中添加fallthrough关键字则类似java的执行情况)
a := "hello"
switch a{
case "hello":
fmt.Println(1)
case "world","golang":
fmt.Println(2)
default:
fmt.Println(0)
}
/ 输出:1 【只有1】
case
后不仅仅只能是常量,还可以是判断表达式:【switch后面的表达式都没有了】
r := 11
switch {
case r > 10 && r < 20:
fmt.Println(r)
default:
fmt.Println(-1)
}
goto
:跳到
直接跳到目的代码继续运行:【可以运用于统一异常处理】
for i := 1; i < 10; i++ {
for j := 1; j < i+1; j++ {
if j*i == 25 {
/ 跳转到标签
goto breakHere
}
}
}
/ 标签
breakHere:
fmt.Println("直接跳到这儿!")
...
break
:跳出
- break 默认跳出最近的一层循环
- 当然,break 也可以定义标签
breakHere: for i := 1; i < 10; i++ {
for j := 1; j < i+1; j++ {
if j*i == 25 {
// 跳转到标签
break breakHere
}
}
}
注意:break
是跳出指定标签代码循环块,而goto
是指定跳到标签代码!