if a := 1; a > 1 { //定义变量a,a只在if语句中有效
fmt.Println("a > 1")
} else {
if a := 10; a > 1 {
fmt.Println(a) //结果为10,和c语言变量作用域一致
} else {
fmt.Println(a)
}
}
for的三种形式
count := 3
for i := 0; i < count; i++ { //经典形式
fmt.Println(i)
}
for i < count { //类似c中的while,只带终止条件
fmt.Println(i)
i++
}
for { //死循环
if i < count {
fmt.Println(i)
i++
} else {
break
}
}
}
switch用法:
func main() {
count := 1
switch count {
case 1:
fmt.Println(count)
fallthrough //继续检查下一个case,屏蔽break功能
case 2:
fmt.Println(count) //case自带break功能
case 3:
fmt.Println(count)
default:
fmt.Println(count)
}
}
func main() {
count := 1
switch { //switch不带常量,和c中if……else if……esle作用一致
case count == 1: //case需要使用逻辑表达式
fmt.Println(count)
fallthrough //继续检查下一个case,屏蔽break功能
case count <= 1:
fmt.Println(count) //case自带break功能
case count >= 1:
fmt.Println(count)
default:
fmt.Println(count)
}
}
break和标签
func main() {
J:
for j := 0; j < 5; j++ {
for i := 0; i < 10; i++ {
if i > 6 {
break J //标签J位于第一层for循环,break J相当于跳出第一层for循环
}
fmt.Println(i)
}
}
}
continue与标签
func main() {
J:
for j := 0; j < 5; j++ {
fmt.Println("--------")
for i := 0; i < 10; i++ {
if i > 6 {
continue J //标签J位于第一层for循环,continue J相当于跳过其之后的语句并且跳转到第一层for继续执行第一层循环(第一层循环条件j的值仍然递增)
}
fmt.Println(i)
}
fmt.Println("+++++++") //continue的时候第一层循环体内的语言也不会被执行,注意与C的区别
}
}
goto与标签
func main() {
J:
for j := 0; j < 5; j++ {
fmt.Println("--------")
for i := 0; i < 10; i++ {
if i > 6 {
goto J //goto到第一层for循环,j的值被重新赋值为0,此时循环为无限循环,与continue的区别在于:continue继续执行循环,goto重新开始循环
}
fmt.Println(i)
}
fmt.Println("+++++++")
}
}
使用goto的时候仍然要注意,避免死循环,goto尽可能到其后的代码
有疑问加站长微信联系(非本文作者)