控制语句
if 判断语句
if条件不需使用括号将条件包含起来
大括号{}必须存在,即使只有一行语句
左括号必须在if或else的同一行
在if之后,条件语句之前,可以添加变量初始化语句,使用;进行分隔
在有返回值的函数中,最终的return不能在条件语句中
if num := 10; num < 9 {
} else if num > 11 {
} else {
}
switch判断语句
switch后跟一个表达式,可以是常量、变量、一个有返回值得函数调用
case 后的表达式,如果是常量值,则要求不可重复
case后的各个值得数据类型要与switch后的数据类型保持一致
case后可以设置多个值,使用逗号分割开来
default语句不是必须的,位置也是随意的
switch也可以不带表达式,用作if分支
switch后的表达式可以直接定义变量,使用分号结束,这点与if相同,但是不推荐
case语句后,不需要break语句,默认不回去执行下一个case
如果想要switch穿透,继续判断下个case执行,可以增加 fallthrough关键字
// 值选择
var point = 100
switch point/10 {
case 10, 9, 8:
fmt.Println("你很棒")
case 6, 7:
fmt.Println("下次继续努力")
case 5:
fmt.Println("你不是我亲生的")
// fallthrough // 继续执行下一个case
case 4,3,2,1:
fmt.Println("你要挨打了")
default: // default 可以放在任何位置上,不一定放到最后
fmt.Println("成绩有误")
}
for 循环结构
在go语言中,循环结构只有for循环,没有while循环,支持 break、continue、goto 关键字控制流程。
普通写法:
for i := 1; i < 5; i++ {
fmt.Print("i = " + strconv.FormatInt(int64(i), 10) + " | ")
}
变种写法,类似while,通常用在不确定循环次数的情况:
j := 1
for j < 5 {
fmt.Print("j = " + strconv.FormatInt(int64(j), 10) + " | ")
j++
}
死循环的两种写法:
for {
xxxx
}
for ;; {
xxxx
}
遍历字符串:
var str = "hello 世界"
for i := 0; i < len(str); i++ {
fmt.Printf("%c", str[i])
}
// hello ä¸ç
// 因为汉字的长度不是一个字节,所以这里会有乱码
for range遍历字符串,类似for each:
var s = "hello 世界"
for i, value := range s {
fmt.Printf("索引为 %d, 值为%c", str[i])
}
// 结果为 索引为 0, 值为h索引为 1. 入门, 值为e索引为 2, 值为l索引为 3, 值为l索引为 4, 值为o索引为 5, 值为 索引为 6, 值为世索引为 9, 值为界
// for range 针对的是字符进行遍历的
break跳出循环, continue继续循环:
var sum = 0
for i := 1; i <= 100; i ++ {
if sum >= 50 { // 求和值大于五十,停止求和
break
}
if i % 2 == 0 { // 只求和奇数值
continue
}
sum += i
}
goto语句(不建议使用)
fmt.Println("1. 入门")
goto label1
fmt.Println("2")
fmt.Println("3")
label1:
fmt.Println("4")
// 执行结果 1. 入门 4
最后更新于
这有帮助吗?