当前位置: 首页 > 编程日记 > 正文

【Go】Go基础(四):流程控制(控制结构)

1、if-else结构

格式:

if condition1 {// do something	
} else if condition2 {// do something else	
} else {// default
}

和C的不同,条件语句没有大括号;

新增的语法:

if initialization; condition {// do something
}

例如:

val := 10
if val > max {// do something
}

可以这样写:

if val := 10; val > max {// do something
}

但要注意的是,使用简短方式 := 声明的变量的作用域只存在于 if 结构中(在 if 结构的大括号之间,如果使用 if-else 结构则在 else 代码块中变量也会存在)。
如果变量在 if 结构之前就已经存在,那么在 if 结构中,该变量原来的值会被隐藏。

2、多个返回值

例子:
定义:

	func Open(name string) (*File, error) {return OpenFile(name, O_RDONLY, 0)}

使用:

	file, err := os.Open("config.json")if err != nil {fmt.Sprintln("Cannot open config file")}
3、switch 结构

第一种格式:

switch var1 {case val1:...case val2:...default:...
}

与C语言对比:

*变量 var1 可以是任何类型,而 val1 和 val2 则可以是同类型的任意值。类型不被局限于常量或整数,但必须是相同的类型;或者最终结果为相同类型的表达式。
*前花括号必须和 switch 关键字在同一行。
*同时测试多个可能符合条件的值,使用逗号分割它们,例如:case val1, val2, val3。
*不使用break退出,可以使用return整个函数返回;
*如果不想退出,继续执行下一个case使用关键字:fallthrough

第二种格式:可以省略switch后的varl,这时每个case的类型其实是bool类型,根据case后表达式的真假来判断,类似于if-else

switch {case condition1:...case condition2:...default:...
}

第三种格式:包含一个初始化语句:

switch initialization {case val1:...case val2:...default:...
}
4、for 结构:循环结构,Go语言只有for

第一种格式:

for 初始化语句; 条件语句; 修饰语句 {}

与C语言对比:

* 不需要()
* 左花括号必须和for在同一行
* 循环中同时使用多个计数器:for i, j := 0, N; i < j; i, j = i+1, j-1 {}

第二种格式:

for 条件语句 {} ;类似于while循环

第三种格式:无线循环

for {}

第四种格式:for-range 迭代结构

for index, value := range array { }

它可以迭代任何一个集合(包括数组和 map)

5、break 与 continue

break 语句退出循环
continue 忽略剩余的循环体,准备进入下一次循环,只能被用于 for 循环中

6、标签与 goto

标签:某一行中第一个以冒号(:)结尾的单词,大小写敏感
break、continue后面都可以跟个标签;
goto和标签:标签在goto后面(正序),标签和 goto 语句之间不能出现定义新变量的语句,否则会导致编译失败。

相关文章:

让世界零距离 小鱼易连的大梦想

“他是高材生&#xff0c;也是技术大拿。十年北美&#xff0c;十年中国&#xff0c;他在高科技领域善于创新、精于管理&#xff0c;五项中美专利加身。他在北电网络领导团队不断创新&#xff0c;成就亚太顶尖;他曾任宝利通全球高管&#xff0c;带领团队从初创一路起飞&#xff…

程序员再也不能埋头敲代码了

上周&#xff0c;阿里巴巴重磅发布了机器学习平台 PAI 3.0 版本&#xff0c;据悉&#xff0c;这个 PAL 平台封装了 200 多种经典算法&#xff0c;可以轻松搭建机器学习实验。作为码农一枚&#xff0c;使我不得不抬起原本一直低着敲代码的头&#xff0c;看看这个为 AI 狂欢的世界…

函数的重载 - C++快速入门06

函数的重载 让编程改变世界 Change the world by program 函数的重载 C 里的函数重载&#xff08;overloading&#xff09;机制比我们此前见到的东西都高深&#xff0c;这种语言的灵活性和强大功能在它身上体现得淋漓尽致。 所谓函数重载的实质就是用同样的名字再定义一个有…

【Go】Go基础(五):函数

1、简述 Go 里面有三种类型的函数&#xff1a; * 普通的带有名字的函数 * 匿名函数或者lambda函数 * 方法&#xff08;Methods&#xff09;两个特殊函数&#xff1a;main()和init()&#xff0c;它们没有参数和返回值&#xff1b; Go语言里面没有函数重载&#xff1b; 2、函数…

搬箱轮滑再炫技!一个被波士顿动力耽误的机器人

点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」7折优惠最后3天&#xff0c;请扫码咨询 ↑↑↑整理 | 琥珀出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;据 TheVerge 等多家外媒报道&#xff0c;波士顿动力公司 (Boston Dynamics) 又推出了一款新的机器人&…

我是如何在天猫、蚂蚁金服、百度等大厂面试中被拒的 | 掘金技术征文

本人16年毕业于普通二本院校网络相关专业&#xff0c;工作经验两年半&#xff0c;目前就职业于一家普通民营企业。 由于非985、211学历硬伤&#xff0c;校招进大厂的门槛远高于同届985、211的毕业生。于是乎&#xff0c;从毕业到现在经历了三家创业公司&#xff0c;创业公司的痛…

solaris上的pkg管理

原文写于2010-05-18 19:43:40 网易博客,已删. 在solaris上安装程序,很多时候多离不开package管理.上的编译好的软件都是已package的形式压缩好然后提供给大家下载的. 关键是3个命令:pkgadd/pkginfo/pkgrm pkgadd -d pkgname用来添加安装包 pkginfo 用来打印系统…

【Go】Go基础(六):数组、切片slice、映射map

1、数组 1.1 数组定义 数组&#xff1a;数组是具有相同 唯一类型 的一组已编号且长度固定的数据项序列。 数组长度必须是一个常量表达式&#xff0c;并且必须是一个非负整数。数组长度也是数组类型的一部分&#xff0c;所以[5]int和[10]int是属于不同类型的。数组长度最大为 …

语义表征的无监督对比学习:一个新理论框架

点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」7折优惠最后3天&#xff0c;请扫码咨询 ↑↑↑译者 | Linstancy责编 | 琥珀出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;诸如图像、文本、视频等复杂数据类型的语义表征 (也称为语义嵌入) 已成为机器学习的核心…

YEX黄建:脱离比特币谈区块链,要么真傻,要么装疯卖傻丨区块链十人谈

如果说2017年是属于虚拟货币的一年&#xff0c;那么2018年的区块链将是生态和应用的一年&#xff0c;随之而来的也将是新的玩法、新的赚钱姿势。为此&#xff0c;雷锋网推出“区块链十人谈”&#xff08;十人者&#xff0c;取是知众人博所长之意&#xff0c;非实指&#xff09;…

70佳精美的PSD素材免费下载(上篇)

设计师经常会去网上搜罗各种各样的素材&#xff0c;这些免费素材不仅能帮助他们节省大量的时间&#xff0c;而且能有很好的效果。今天&#xff0c;本文与大家分享70佳精美的PSD素材&#xff0c;非常感谢那些很有才华的设计师分享它们的劳动成果&#xff0c;让更多的人可以使用他…

漫画讲述人工智能简史

点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」7折优惠最后3天&#xff0c;请扫码咨询 ↑↑↑作者 | 武博士、宋知达、袁雪瑶、聂文韬来源 | 大鱼AI&#xff08;id:DayuAI-Founder&#xff09;本文我们会以生动有趣的漫画来介绍关于人工智能&#xff08;AI&#xff09;相…

【Go】Go基础(七):包

一、标准库概述 1、官方手册 内置包在 Go 语言中有 150 个以上&#xff0c;它们被称为标准库&#xff0c;完整列表可以在Go Walker中查看 https://gowalker.org/search?qgorepos 2、常用包简介 unsafe: 包含了一些打破 Go 语言“类型安全”的命令&#xff0c;一般的程序中不会…

Mysql是时候学习一个存储过程了

create procedure 存储过程名() DECLARE uid INT; #注意声明的变量名不能跟表的字段名一致&#xff0c;否则会报错。如user的主键是id&#xff0c;那么这里声明用来存id值的变量名就不能为id&#xff0c;可以改为uid等 DECLARE done INT DEFAULT 0; #repeat结束标识 DECLARE us…

ASP.NET的Cookie跨域问题

将Cookie的有效范围限制到域。 默认情况下&#xff0c;Cookie 与特定的域相关联。例如&#xff0c;如果您的站点是 www.contoso.com&#xff0c;那么当用户向该站点请求页面时&#xff0c;您编写的Cookie就被发送到服务器。&#xff08;有特定路径值的Cookie除外&#xff09;…

详解物联网的中间件:为何说它是不可或缺的?

互联网的大规模普及&#xff0c;拉近了人与人之间的交流&#xff0c;而不同国家人与人之间的交往也变得密切起来。由于彼此使用的语言不通&#xff0c;为了能够互相交流&#xff0c;我们需要将不同种的交流语言转换成对方可识别的信息&#xff0c;这就是翻译存在的理由了。同样…

Decoders对于语义分割的重要性 | CVPR 2019

点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」7折优惠最后3天&#xff0c;请扫码咨询 ↑↑↑作者 | Lin-Zhuo Chen转载自博客链接&#xff1a;https://linzhuo.xyz/posts/DUpsample/今天为大家推荐一篇 CVPR2019 关于语义分割的文章 Decoders Matter for Semantic Segme…

【Go】Go基础(八):结构体和方法

一、 结构体&#xff08;struct&#xff09; 1、结构体定义 type identifier struct {field1 type1field2 type2... }声明&#xff1a;new(Type) 和 &Type{}是等价的 2、初始化结构体 type Interval struct {start intend int }初始化方式&#xff1a; intr : Inter…

Windows 2008 R2 SP1部署Lync2010企业版(四)

9 部署存档和监控服务器 1) 以域管理身份登录SQL01服务器。 2) 单击“开始”&#xff0c;依次指向“程序”、“管理工具”&#xff0c;然后单击“服务器管理器”显示服务器管理器。 3) 单击“添加功能”启动“添加功能向导”&#xff0c;选择“消息队列”&#xff0c;下一步。 …

【Go】Go基础(九):接口(Interfaces)与反射(reflection)

一、接口&#xff08;interfaces&#xff09; 1、概述 接口定义了一组方法&#xff08;方法集&#xff09;&#xff0c;但是这些方法不包含&#xff08;实现&#xff09;代码&#xff1a;它们没有被实现&#xff08;它们是抽象的&#xff09;。接口里也不能包含变量。 通过如…

用ECMAScript4 ( ActionScript3) 实现Unity的热更新 -- 使用原型链和EventTrigger

原型链是JS的必备&#xff0c;作为ECMAScript4,原型链也是支持的。 特别说明&#xff0c;ActionScript3是支持完整的面向对象继承支持的,原型链只在某些非常特殊的情况下使用。 本文旨在介绍如何使用原型链。 任意对象类型都有一个prototype属性&#xff0c;包括导入的Unity的A…

教育部发文35所高校新增AI本科专业!想回去重新高考

点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」7折优惠最后3天&#xff0c;请扫码咨询 ↑↑↑作者 | 琥珀出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;2019 年 3 月 28 日&#xff0c;教育部公布了 2018 年度普通高等学校本科专业备案和审批结果。消息一出&…

莱芜市公安局交警支队智能交通项目集成及容灾公开招标公告

莱芜市公安局交警支队智能交通建设项目公开招标公告 时间:2011-7-5 点击:249莱芜市公安局交警支队智能交通建设项目公开招标公告一、招标人名称&#xff1a;莱芜市公安局交警支队 联系方式&#xff1a;0634-5667998&#xff08;吕老师&#xff09;二、招标代理机构名称&#x…

【Go】Go基础(十):文件读写

一、读写数据 1、读取用户的输入 使用fmt 包提供的 Scan 和 Sscan 开头的函数&#xff1b; * Scanln 扫描来自标准输入的文本&#xff0c;将空格分隔的值依次存放到后续的参数内&#xff0c;直到碰到换行。 * Scanf 与其类似&#xff0c;除了 Scanf 的第一个参数用作格式字符…

怎样能拿到第一份编程工作?这里告诉你答案 | 码书

“写代码时&#xff0c;每次都要告诉自己&#xff1a;最后负责维护代码的&#xff0c;会是一个知道你住在哪的变态暴力狂。” ——约翰伍德&#xff08;John Woods&#xff09;拿下第一份编程工作需要付出更多努力&#xff0c;但是如果采纳下面的建议&#xff0c;应该不会有太大…

JSON知识点

JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集&#xff0c;采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读…

asp常用函数(备忘)

1.数组长度&#xff1a; <% Dim grade,i gradesplit("1,2,5,10,20,50,100,200,500,1000",",") for i0 to ubound(grade) response.write grade(i)&"\n" next %> 2.获得插入的id set rs server.createobject(&q…

【leetcode】力扣刷题(1):两数之和(Go、Python)

一、问题描述 给定一个整数数组 nums 和一个目标值 target&#xff0c;请你在该数组中找出和为目标值的那 两个 整数&#xff0c;并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;你不能重复利用这个数组中同样的元素。 示例: 给定 nums [2, 7,…

轻松练:如何从900万张图片中对600类照片进行分类|技术头条

点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」7折优惠最后2天&#xff0c;请扫码咨询 ↑↑↑作者 | Aleksey Bilogur译者 | 风车云马责编 | Jane出品 | AI科技大本营&#xff08;公众号id:rgznai100&#xff09;【导语】完成一个简单的端到端的机器学习模型需要几步&…

介绍两个好玩的和Github相关的Chrome扩展

1. Octotree 默认的github网页里的代码显示没有我们在IDE里看到的直观&#xff0c;即代码文件所在的文件夹无法以树形层级结构显示在屏幕左边。 安装Octotree之后&#xff1a; 方便多了。 2. Isometric Contributions github commit的统计页面比较平淡&#xff1a; 安装了Isome…