分享
  1. 首页
  2. 文章

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

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

最近在看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

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

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏