2025年golang流程控制

golang流程控制1 if 条件判断 整个语句没有标点符号 只要出现 if 那么 必须与之在同一行 只要出现 else 那么 必须与之在同一行 因此为了确保不翻车 保持所有括号与关键字在同一行即可 if 表达式 1 分支 1 else if 表达式 2 分支 2 else 分支 3 另外

大家好,我是讯享网,很高兴认识大家。

1 if 条件判断

整个语句没有标点符号

  • 只要出现if,那么{ 必须与之在同一行
  • 只要出现else,那么}必须与之在同一行

因此为了确保不翻车,保持所有括号与关键字在同一行即可

if 表达式1 { 分支1 } else if 表达式2 { 分支2 } else { 分支3 } 

讯享网

另外,在条件判断表达式之前还能做一个变量赋值语句,比如 if score := 65; score >= 90 {

2 switch case 多条件判断

条件冒号

讯享网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("无效的输入!") } } 

3 for循环

  • for 语句; 条件; 语句 {
  • for; 条件; 语句 {
  • for 条件 {

3.1 基本

  1. 左括号必须与关键字同一行
for 初始语句; 条件表达式; 结束语句 { 循环体语句 } func forDemo() { for i := 0; i < 10; i++ { fmt.Println(i) } } 
  1. 初始语句可以被忽略,但是初始语句后的分号必须要写,此时分号后面的内容才被判定为条件
讯享网for ; 条件表达式; 结束语句 { 循环体语句 } func forDemo2() { i := 0 for ; i < 10; i++ { fmt.Println(i) } } 
  1. 初始语句和结束语句可以同时省略,两者同时省略时则没有分号,只剩一个条件
for 条件表达式 { 循环体语句 } func forDemo3() { i := 0 for i < 10 { fmt.Println(i) i++ } } 

3.2 无限循环

可以通过breakgotoreturnpanic语句强制退出循环

讯享网for { 循环体语句 } 

3.3 break打断循环

3.4 continue继续循环

3.5 for range 遍历

使用for range遍历数组、切片、字符串、map 及通道(channel)

  1. 数组、切片、字符串返回索引和值
  2. map返回键和值
  3. 通道(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) } } 

3.6 实现99乘法表

讯享网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-11)(https://f0hdj04rkg.feishu.cn/space/api/box/stream/download/asynccode/?code=ZjI4NWY3MjdkZmZjNjFiZGUwNDM1N2Q5NmVmN2I0NjRfYTZzZ1U5bUhrTFJ1cWJlTHM3bDRiejhzQTJTT2R3aTFfVG9rZW46Ym94Y25Rb08xRXEwZ0lsVVRGemJHNVA2eGZlXzE2NTI3OTA0MTg6MTY1Mjc5NDAxOF9WNA)]

\t的效果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZwhtAvZc-12)(https://f0hdj04rkg.feishu.cn/space/api/box/stream/download/asynccode/?code=YjRmNzA1MTkwZTA3ODAzZTZiZDNkYTk1YWI5NGQ1YzNfNnk4QXFXOUsxc1lvT0dtRklKMHF3dnRXaUJCaU1HQlJfVG9rZW46Ym94Y25BUFhtVE9qeW55WVR0aXNXYkVzdTZnXzE2NTI3OTA0MTg6MTY1Mjc5NDAxOF9WNA)]

4 goto定点跳转

通过标签进行代码间的无条件跳转

比如:要求一旦j==2就跳出整个循环

4.1 常规实现

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 } } } 

4.2 goto实现

讯享网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循环") } 
小讯
上一篇 2025-01-05 11:22
下一篇 2025-04-02 17:19

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/68876.html