博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(二) Go的关键字
阅读量:5107 次
发布时间:2019-06-13

本文共 1473 字,大约阅读时间需要 4 分钟。

for


Go 只设计了一种循环 就是 for 循环。

基本的 for 循环包含三个组成部分(由 分号 分开):

for i:=1; i < 10; i++ {  // i:=1 初始化语句   // i < 10 循环条件表达式   // i++ 后置语句 }

  初始化语句;循环条件表达式;后置语句

    初始化语句:在第一次循环执行前被执行

    循环条件表达式:每次迭代开始前被求值

    后置语句:每次迭代后被执行

初始化语句一般是一个短变量什么,这里声明的变量只能在整个 for 循环作用域中可见。

如果条件表达式的值为 false , 那么迭代终止。

注:Go 不像C,Java,或者Javascript 等其他语言,for语句的三个组成部分 并不需要用括号括起来,但循环体必须用 {} 括起来 表明作用域。

另:循环初始化语句和后置语句都是可选的。

  for 是 Go 的 "while" 基于此可以省略分号: C 的 while 在 Go 中叫 for

  循环条件可以省略,如果省略了则循环不会结束,

for {  //做你要做的}

  因此可以用简洁地形式表达死循环。

 

if


 

就像 for 循环一样,Go 的 if 语句也不要求用 () 将条件括起来,同时, {} 还是必须有的。

if 的便捷语句

  跟 for 一样,if 语句可以在条件之前执行一个简单语句。

  由这个语句定义的变量的作用域仅在 if 范围之内。

if 和 else

  在 if 的便捷语句定义的变量同样可以在任何对应的 else 块中使用。

if ok:=func(); ok {  } else {}

  

 

switch


num := 0switch {case num < 1:	fallthroughcase num <= 2:	fmt.Println("num <= 2")default:	fmt.Println("default")}

除非以 fallthrough 语句结束,否则分支会自动终止。

switch 的执行顺序

  switch 的条件从上到下的执行,当匹配成功的时候停止。

  注意:Go playground 中的时间总是从 2009-11-10 23:00:00 UTC 开始。

没有条件的switch

  没有条件的 switch 同 switch true 一样。

  这一构造使得可以用更清晰的形式来编写长的 if - then - else 链

 

defer


 

defer 语句会延迟函数的执行直到上层函数返回。

延迟调用的参数会立刻生成,但是在上层函数返回前函数都不会被调用。

defer 栈

  延迟的函数调用被压入一个栈中。但函数返回时,会按照后进先出的顺序调用被延迟的函数调用。

eg:

例中 defer 后的 fmt.Println("defer") 将会在 main 的 return 后执行

func main() {  defer fmt.Println("defer")  num := 0  switch {    case num < 1:	  fallthrough    case num <= 2:	  fmt.Println("num <= 2")    default:	  fmt.Println("default")  }  return}

 

转载于:https://www.cnblogs.com/questionmark/articles/7365273.html

你可能感兴趣的文章
java pdf动态生成,从Java应用程序动态生成PDF文件
查看>>
红细胞识别matlab,图像处理—红细胞计数(Matlab).doc
查看>>
php让from背景变成半透明,php – imagecreatefrompng()使一个黑色的背景,而不是透明?...
查看>>
oracle函数基础知识,ORACLE 基础知识以及基本函数
查看>>
oracle9i安装后,Oracle9i安装过程说明
查看>>
oracle+609,Fatal NI Connect 12560' And 'ORA-609 解决方法
查看>>
oracle会话比进程高,oracle数据库CPU特别高的解决方法详解
查看>>
linux查询进程ps grep,Linux下通过grep查找指定的进程是否存在
查看>>
linux终端文件夹颜色,linux 修改文件夹颜色 终端颜色
查看>>
linux eclipse进程,Linux环境中用Eclipse搭建C++程序开发平台
查看>>
linux启动redis指定端口,linux配置redis三种启动方式
查看>>
linux在当前目录使用test,为什么所有的文件都显示不存在?,Linux 常用命令
查看>>
linux下Qt程序deb打包,Ubuntu1604打包QT的程序
查看>>
分析linux内核 内存管理,Linux内核代码分析之内存管理.doc
查看>>
linux mint开发环境,linux mint 开发环境配置
查看>>
linux中cut -c命令,linux中~/cut/argus/
查看>>
linux 写一个包含test的脚本程序,Linux运维学习作业2-1-bash脚本编写
查看>>
linux汇编码表,汇编码表及扩展码表(范文).doc
查看>>
linux 内核模块 proc,Linux内核模块与_proc文件系统
查看>>
linux sudo yum命令详解,每天一个Linux命令之sudo命令详解
查看>>