外贸 国外推广网站,网站域名空间费用,微信公众号创建流程,全国建设部网站if语句
go里面if不需要括号将条件表达式包含起来#xff0c;这与python也有点类似 if 条件表达式 {
}
if num 18 {// ...
} else if num 20 {// ...
} else {// ...
}需要注意的是go支持在if的条件表达式中直接定义一个变量#xff0c;变量的作用域只在if范围内…if语句
go里面if不需要括号将条件表达式包含起来这与python也有点类似 if 条件表达式 {
}
if num 18 {// ...
} else if num 20 {// ...
} else {// ...
}需要注意的是go支持在if的条件表达式中直接定义一个变量变量的作用域只在if范围内如
if num : 20; num 5 {// ...
}这让我们一些场景可以便捷地存储中间变量
switch语句
go语言的switch分支不需要有break语句这是与c不同的地方。基本语法如下 switch expression { case expression1,expression2,…: // … case expression3, expression4,…: // … // … default: // … } golang中是允许多个表达式匹配的比如expression1或expression2就会执行第一个case。default语句不是必须的但为了程序稳定通常需要有默认操作。
switch num {
case 1, 2, 3:fmt.Println(num, num)
case 4, 5, 6:num
default:fmt.Println(not in range)
}另外switch后面也可以不带表达式这时等价于if -else
switch {
case num 1:// ...
case num 2:// ...
default:// ...
}switch后面也可以定义一个变量分号结束通常不这样写
switch num : 90; {
case num 90:// ...
default:// ...
}switch fallthrough
在一个case语句中使用fallthrough则会继续执行下一个case分支注意这里下一个分支不用判断直接执行。但通常不用条件语句已经足够覆盖所有场景
switch num {
case 10:// ...fallthrough
case 20:// ...
default:// ...
}type-switch(不懂的后面的文章会讲到)
switch语句还可以用来判断某个interface变量中实际指向的变量类型
var x interface
var y 10.0
x y
switch i : x.(type) {case nil:// ...case int:// ...case float64:// ...case func(int) float64:fmt.Printf(x 是 func(int)型)case bool, string://default:// ...
}for循环语句
go语言的for循环也是不需要用()把表达式给包起来如
for num : 0; num 10; num {// ...
}此外for循环可以有以下两种写法
for num 99 {// 只写循环条件的写法
}for {// 什么条件都不写相当于无限循环在内部决定循环终止条件
}// 上面的for等价于
for ; ; {
}for range遍历字符串
另外go语言也支持fo range的遍历方式便于遍历字符串和数组如
str1 : hello, zhangping
for index, val : range str1 {fmt.Printf(index%d val%c\n, index, val)
}for range遍历字符串时是按照字符来遍历的而不是按照字节来遍历的。与我们常规字节遍历的区别在于像遍历中文字符串for range会打印一整个中文字符但常规字节遍历会打印单个字节(一个中文两个字节通常会乱码 传统的方法想要打印中文需要转换成rune的切片
str1 : hello, 张平
str2 : []rune(str1)
for i : 0; i len(str2); i {fmt.Printf(%c\n, str2[i])// break// coontinue
}
go里面没有while和do while语句要跳出循环也是break跳过本次循环continue另外go语言也支持goto语句跳到任意语句处但最好不要用。