当前位置: 首页 > news >正文

A Tour of Go: Basics 2

For

For语句有三个基本部分组成,以分号隔开:

  • 初始语句:只在第一次循环开始前执行,通常就是变量定义和初始化,这里定义的变量作用范围只在For循环本身。
  • 条件表达式:每一次循环开始前执行,当false结束循环。
  • post语句:每一次循环结束后执行。

技巧:

  • 初始语句和post语句是可以省略的。
  • 条件表达式也可以省略,就是死循环。
  • Go语言只有一个循环结构,就是for语句。while语句在Go中也是由for表示。
// for
sum := 1
for ; sum < 1000; {
    sum += sum
}

// while
sum := 1
for sum < 1000 {
    sum += sum
}

注意点:

  • 与其他语言不同,三个语句不需要用括号括起来。
  • 循环体需要用大括号括起来。

If

跟for一样,if语句可以包含一个初始语句,作用范围限于if本身(包括else)。同样地,if语句也不需要小括号,但是需要大括号。

Switch

Switch是if else语句在某些场景下的更好选择。匹配到等于condition的case并执行,然后停止switch,不需要显式break。
同样可以有初始语句。
条件可以为空,表示switch true。

Defer

推迟到周围函数都执行完以后再执行。
被推迟的函数是放在stack里的,因此遵循后进先出原则。
应用场景比如用于清理动作等,参见:https://blog.golang.org/defer-panic-and-recover

转载于:https://blog.51cto.com/zxdlife/2294330

相关文章:

  • Scala学习(十)特质
  • linux安装LNMP环境之安装PHP
  • Graphviz的安装 - windows环境下
  • RSocket:一个面向反应式应用程序的新型应用网络协议
  • Spring Bean生命周期-registerBeanPostProcessors(七)
  • C#指定用户启动进程
  • ServletRequest和ServletResponse学习笔记
  • Ubuntu16.04 System program problem detected
  • MariaDB10.3 增补AliSQL补丁---安全执行Online DDL
  • shell脚本中打印所有匹配某些关键字符的行或前后各N行
  • 数组遍历的方法(loop)
  • 18-10-11
  • clipboard.js无法复制粘贴
  • android SAF存储访问框架
  • Oracle SQL执行计划基线总结(SQL Plan Baseline)
  • 【跃迁之路】【733天】程序员高效学习方法论探索系列(实验阶段490-2019.2.23)...
  • 2018一半小结一波
  • Java 网络编程(2):UDP 的使用
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • magento 货币换算
  • Sequelize 中文文档 v4 - Getting started - 入门
  • session共享问题解决方案
  • WebSocket使用
  • 欢迎参加第二届中国游戏开发者大会
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 物联网链路协议
  • 【云吞铺子】性能抖动剖析(二)
  • ​ssh免密码登录设置及问题总结
  • ​力扣解法汇总946-验证栈序列
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • #1015 : KMP算法
  • #微信小程序(布局、渲染层基础知识)
  • $Django python中使用redis, django中使用(封装了),redis开启事务(管道)
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (2)STL算法之元素计数
  • (23)Linux的软硬连接
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (转) Android中ViewStub组件使用
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库
  • (转)一些感悟
  • (转载)从 Java 代码到 Java 堆
  • .gitignore文件—git忽略文件
  • .Net FrameWork总结
  • .net 反编译_.net反编译的相关问题
  • .NET6使用MiniExcel根据数据源横向导出头部标题及数据
  • .NET企业级应用架构设计系列之结尾篇
  • @Bean注解详解
  • @ModelAttribute注解使用
  • [Angularjs]asp.net mvc+angularjs+web api单页应用之CRUD操作
  • [BUUCTF]-Reverse:reverse3解析
  • [C#]DataTable常用操作总结【转】
  • [C#]winform部署PaddleOCRV3推理模型
  • [C++]高精度 bign (重载运算符版本)