整个语句没有标点符号
if,那么{必须与之在同一行else,那么}必须与之在同一行因此为了确保不翻车,保持所有括号与关键字在同一行即可
if 表达式1 {
分支1
} else if 表达式2 {
分支2
} else {
分支3
}
另外,在条件判断表达式之前还能做一个变量赋值语句,比如 if score := 65; score >= 90 {
条件冒号
case N:
default:
func switchDemo1() {
finger := 3
switch finger {
case 1:
fmt.Println("大拇指")
case 2:
fmt.Println("食指")
case 3:
fmt.Println("中指")
case 4:
fmt.Println("无名指")
case 5:
fmt.Println("小拇指")
default:
fmt.Println("无效的输入!")
}
}
; 条件; 语句 {; 条件; 语句 {{for 初始语句; 条件表达式; 结束语句 {
循环体语句
}
func forDemo() {
for i := 0; i < 10; i++ {
fmt.Println(i)
}
}
for ; 条件表达式; 结束语句 {
循环体语句
}
func forDemo2() {
i := 0
for ; i < 10; i++ {
fmt.Println(i)
}
}
for 条件表达式 {
循环体语句
}
func forDemo3() {
i := 0
for i < 10 {
fmt.Println(i)
i++
}
}
可以通过break、goto、return、panic语句强制退出循环
for {
循环体语句
}
使用for range遍历数组、切片、字符串、map 及通道(channel)
遍历二维数组a:for x, y := range a
// 遍历数组
func main() {
a := [...]int{1, 3, 5, 7, 8}
for x, y := range a {
fmt.Printf("%v,%v \n", x, y)
}
}
func main(){
for i := 1; i < 10; i++ {
for j := 1; j < 10; j++ {
if i >= j {
fmt.Printf("%v*%v=%v\t ", j, i, i*j)
}
}
fmt.Println()
}
}
\t 用于对齐
不加\t的效果:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OGdzkscc-1660041523111)(https://f0hdj04rkg.feishu.cn/space/api/box/stream/download/asynccode/?code=ZjI4NWY3MjdkZmZjNjFiZGUwNDM1N2Q5NmVmN2I0NjRfYTZzZ1U5bUhrTFJ1cWJlTHM3bDRiejhzQTJTT2R3aTFfVG9rZW46Ym94Y25Rb08xRXEwZ0lsVVRGemJHNVA2eGZlXzE2NTI3OTA0MTg6MTY1Mjc5NDAxOF9WNA)]
加\t的效果:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZwhtAvZc-1660041523112)(https://f0hdj04rkg.feishu.cn/space/api/box/stream/download/asynccode/?code=YjRmNzA1MTkwZTA3ODAzZTZiZDNkYTk1YWI5NGQ1YzNfNnk4QXFXOUsxc1lvT0dtRklKMHF3dnRXaUJCaU1HQlJfVG9rZW46Ym94Y25BUFhtVE9qeW55WVR0aXNXYkVzdTZnXzE2NTI3OTA0MTg6MTY1Mjc5NDAxOF9WNA)]
通过标签进行代码间的无条件跳转
比如:要求一旦j==2就跳出整个循环
func main() {
var breakFlag bool
for i := 0; i < 10; i++ {
for j := 0; j < 10; j++ {
if j == 2 {
// 设置退出标签
breakFlag = true
break
}
fmt.Printf("%v-%v\n", i, j)
}
// 外层for循环判断
if breakFlag {
break
}
}
}
func main() {
// var breakFlag bool
for i := 0; i < 10; i++ {
for j := 0; j < 10; j++ {
if j == 2 {
goto breakTag
}
fmt.Printf("%v-%v\n", i, j)
}
}
// 跳出外层for
breakTag:
fmt.Println("结束for循环")
}