06 Golang分支和循环


本文摘自网络,作者,侵删。

分支控制

1.if else
  • 写法1
age := 30;
if age > 18 {
    fmt.Println("成年人")
}
  • 写法2
if age := 30; age > 18 {
    fmt.Println("成年人")
}

两种写法的{}都不能省略,区别是:变量age的作用域不同

2.switch case

这里的break语句,可写可不写。

switch extname := ".html"; extname {
    case ".html":
        fmt.Println("text/html")
        break
    case ".css":
        fmt.Println("text/css")
        break
    case ".js":
        fmt.Println("text/javascript")
        break
    default:
        fmt.Println("找不到任何后缀")
}
  • 一个case可以有多个分支

多个case值中间使用英文逗号分隔

var n = 5
switch n{
    case 1, 3, 5, 7, 9:
        fmt.Println("奇数")
    case 2, 4, 6, 8, 10:
        fmt.Println("偶数")
}
  • 分支还可以使用表达式
var age = 30
case age < 24:
    fmt.Println("好好学习")
case age >=24 && age <= 60:
    fmt.Println("好好工作")
case age > 60:
    fmt.Println("好好养生")
  • fullthrough

fallthrough可以执行满足条件的case的下一个case。是为了兼容C语言中的case设计的

var age = 18
switch {
    case age < 24:
        fmt.Println("好好学习")
    case age >=24 && age <= 60:
        fmt.Println("好好工作")
        fallthrough 
    case age > 60:
        fmt.Println("好好养生")
        fallthrough 
}

循环

1.for
  • 写法1
for i := 1; i <= 10; i++ {
    fmt.Print(i)
}
  • 写法2
i := 1
for ; i <= 10; i++ {
    fmt.Print(i)
}
  • 写法3
i := 1
for i <= 10 {
    fmt.Print(i)
    i++
}
  • 写法4
i := 1
for i <= 10 {
    fmt.Print(i)
    i++
}
  • 写法5

Go语言中没有while,可以使用for循环来替代

i := 1
for {
    if i <= 10 {
        fmt.Print(i)
    } else {
       break 
    }
    i++
}
2.for range

用于遍历数组、切片、字符串、map及通道(channel),通过for range遍历的返回值有以下规律:

1.数组、切片、字符串返回索引和值

2.map返回键和值

3.通道(channel)只返回通道内的值

var str = "你好golang"
for k, v := range str {
    fmt.Printf("key=%v val=%v\n", k, v)
    //key=0 val=你
    //key=1 val=好
}
var arr = []string{"php", "java", "node", "golang"}
for i := 0; i < len(arr); i++ {
    fmt.Println(arr[i])
}
for _ val := range arr {
    fmt.Println(val)
}
跳出循环
  • break

在多重循环中,可以用标号lable标出想break的循环

lable1:
    for i := 0; i < 2; i++ {
        for j := 0; j < 10; j++ {
            if j == 1 {
                break lable1
            }
            fmt.Printf("i=%v j=%v\n", i, j)
        } 
    }
}
  • continue

提前结束本次循环,回到下一次循环开始的地方

lable2:
    for i := 0; i < 2; i++ {
        for j := 0; j < 10; j++ {
            if j == 1 {
                break lable1
            }
            fmt.Printf("i=%v j=%v\n", i, j)
        } 
    }
}
// i=0 j=0
// i=1 j=0
  • goto

通过标签进行代码间的无条件跳转,可以快速跳出循环,在避免重复退出上有一定的帮助。

var n = 30
if n > 18 {
    fmt.Printf("成年人")
    goto label3
}
fmt.Println("aaa")
label3:
fmt.Println("bbb")

本文来自:简书

感谢作者:learninginto

查看原文:06 Golang分支和循环

相关阅读 >>

Go语言学习(四):数组和切片

最长公共子序列

Golang json格式化自定义日期格式

easydss如何定制Go语言生成csv文件?

关于Golang中的错误处理机制的详细介绍

Go实现安全并发map读写

Go语言happens-before原则及应用

Go 语言和 java 比较?

Goland ide 安装终解

linux下怎么安装Go语言环境

更多相关阅读请进入《Go》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...