Golang 条件循环语句
本文简单介绍 golang 中最常用的两种流程控制语句,条件和循环。
条件语句
golang 的条件语句和其他语言大同小异,仅做一些简单介绍即可。
if 语句
if 语句和其他语言相同,使用 if - elseif - else 的格式,需要注意的是 go 的 condition 只能为表达式,如 if res != 0 {}
,而不能像 python 一样直接使用 if res {}
if condition {
// dosomething
} else if condition {
// dosomething
} else {
// dosomething
}
switch 语句
switch 语句执行的过程从上至下,直到找到匹配项
和 C 语言等不同的是,go 的 switch 默认情况下 case 最后自带 break,不需要再显示的加 break。匹配成功后就不会执行其他 case,如果要执行后面的 case,需要使用 fallthrough 关键字。
switch i {
case 0: // 空的 case 体
case 1:
f() // 当i == 0 时,f 不会被调用!
}
switch i {
case 0: fallthrough
case 1:
f() // 当i == 0 时,f 会被调用!
}
switch 后面置空,相当于一连串的 if-else-if-else 判断
switch {
case grade == "A" :
fmt.Printf("优秀!\n" )
case grade == "B", grade == "C" :
fmt.Printf("良好\n" )
case grade == "D" :
fmt.Printf("及格\n" )
case grade == "F":
fmt.Printf("不及格\n" )
default:
fmt.Printf("差\n" )
}
fmt.Printf("你的等级是 %s\n", grade)
for 循环语句
go 的循环只有 for 循环这一种方式,没有其他语言中的 while,do while 等。
第一种形式
go 没有逗号表达式,所以如果要执行多个变量,要用平行赋值
go 中 ++,--
是语句而不是表达式,所以只能出现 i++
,而 j = i++
这种写法会报错
for initialization; condition; post {
// dosomething
}
// 不能写为 for i := 0, j := len(a) - 1; i < j; i++, j-- {}
for i, j := 0, len(a) - 1; i < j; i, j = i + 1, j - 1 {
a[i], a[j] = a[j], a[i]
}
第二种形式
类似其他语言的 while 循环
condition 也可以省略变成无限循环
for condition {
// dosomething
}
第三种形式
实际开发中最常使用这种形式,用于遍历 array,slice,string, map, channel 等,每次循环迭代, range 产生一对值;索引以及在该索引处的元素值。
类似 python 中的 for i, num in enumerate(nums)
for i, num := range nums {
// dosomething
}
// 如果不需要用到索引,则必须用 _ 空标识符(blank identifier)代替索引变量,因为Go语言不允许使用无用的局部变量(local variables,会导致编译错误
for _, num := range nums {
// dosomething
}
goto
Go 语言的 goto 语句可以无条件地转移到过程中指定的行,通常与条件语句配合使用。可用来实现条件转移, 构成循环,跳出循环体等功能。但是,在结构化程序设计中一般不主张使用 goto 语句, 以免造成程序流程的混乱,使理解和调试程序都产生困难。
var a int = 10
LOOP: for a < 20 { // 设置标签
if a == 15 {
/* 跳过迭代 */
a = a + 1
goto LOOP // 跳到标签 “LOOP” 的位置
}
fmt.Printf("a的值为 : %d\n", a)
a++
}
上一篇: 智能穿戴创业公司何去何从?
下一篇: 物联网时代的营销:4个想法和2个成功案例