Go语言流程控制语句if、goto、for、switch

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

最近在看go语言,虽然网上大多数的评论都是在吐槽go语言,但是我喜欢简单的东西,我不拿它和任何语言去比,去用每一种语言完全是自己兴趣问题。

还没开始就跑题了 ~~!回到标题上来,golang的流程控制,刚开始学go,记性一直都不怎么好,做个笔记

流程控制包含三大类:条件判断、循环控制和无条件跳转。

if

go语言的if

package main
 
import (
    "fmt"
)
 
func main() {
    if a := 8; a > 2 {
        fmt.Println("a 比 10 大")
    } else {
        fmt.Println("a 比 10 小")
    }
}

输出  a 比 2 大

if语句允许在if里面声明变量,但是这个变量的作用域只在该条件逻辑块内。

 

goto

package main
import (
    "fmt"
)
func mygoto() {
    i := 0
Here:
    fmt.Println(i)
    i++
    goto Here    //跳转到Here
}
func main() {
    mygoto()
}

友情提示:如果你不小心看到这段代码最好还是别试了,听我的,没错

for循环

go语言里面最强大的一个控制逻辑 for,既可以用来循环读取数据,又可以当做while来控制逻辑,还能迭代操作,语法如下:

package main
import (
    "fmt"
)
func main() {
    a := 0
    for index := 0; index < 10; index++ {
        a += index
    }
    fmt.Println(a)
}

输出结果为 45

 

for可以代替while,忽略expression1 和 expression3 

func main() {
    a := 1
    for a < 1000 {
        a += a
    }
    fmt.Println(a)
}

循环中的两个关键操作,break和continue,break是跳出当前循环,continue是跳出本次循环

for a := 10; a > 0; a-- {
        if a == 5 {
            break //或者continue
        }
        fmt.Println(a)
    }
//break打印出来为10,9 , 8 , 7 , 6
//continue打印出来为10,9 , 8 , 7 , 6 , 5 , 4 , 3 , 2 , 1

for配合range可以读取slice和map的数据

func main() {
    a := [5]int{1, 2, 3, 4, 5}
    for k, v := range a {
        fmt.Println("key:", k)
        fmt.Println("value:", v)
    }
}

如果只想输出value而不想要key,像下面这么写编译会出错,因为go语言对于“声明而未被调用”的变量在编译阶段会报错,但是可以用“_”下划线来丢弃

func main() {
    a := [5]int{1, 2, 3, 4, 5}
    for k, v := range a {
        fmt.Println("value:", v)
    }
}

修改为

func main() {
    a := [5]int{1, 2, 3, 4, 5}
    for _, v := range a {
        fmt.Println("value:", v)
    }
}

switch

switch和许多语言中的用法一样,在if-else需要很多的时候可以用switch

func main() {
    a := 4
    switch a {
    case 1:
        fmt.Print("123")
    case 2, 3, 4:
        fmt.Print("456")
        fallthrough 
    default:
        fmt.Print("789")
    }
}

上面程序输出结果为 456789

根本不用break结尾,go语言默认每个case最后都带有break

fallthrough用于强制执行下一个case语句

 

OK,The End!

 


发布于:http://www.golune.com/blog/content/4b6fe6c324a8337ebe05679ed4c34fae8ec86


有疑问加站长微信联系(非本文作者)

本文来自:ITEYE博客

感谢作者:guhao022

查看原文:Go语言流程控制语句if、goto、for、switch

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

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