06 Golang分支和循环

learninginto · · 307 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

分支控制

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大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

307 次点击  
加入收藏 微博
上一篇:Go-Array
下一篇:Gin实战演练
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传