Go语言的流程控制(条件,选择,控制,跳转,闭包)
1.条件语句:
跟C和python又不同了Go的if -else是这样的
if a<5{
return 0
}
else {
reutrn 1
}
1.条件不需要用括号括起来
2.左边的花括号必须跟if或else一排
3.在if后条件语句前可以添加变量初始化语句用分号作为间隔
2.选择语句:
跟C语言的switch是一样的,但是switch后面的表达式不是必须要的,不同的还有case后面不需要用break来明确退出一个case
switch 变量{
case 0:
case 1:
...
default
}
3.循环语句:
Go语言只支持for循环:
for i :=0;i<10;i++{
}
for 变量;条件;表达式
当使用无线循环的时候直接使用for{}就行了。在for循环中不支持使用逗号分开来赋值变量,只使用一个符号多重赋值就行了
Go语言跟C一样同意支持continue和break,但是break可以指定具体的某一个循环
4.跳转语句:
goto跳转到函数的某一个标签
5.函数
定义 func function_name([parameter list])[return_types]{
函数体
return
}
function_name:函数名
parameter list :参数列表
return_types:返回值类型
Go语言支持多重返回值和错误处理
如果参数列表有多个相同的可以结合一起申明(a,b int)
函数的调用
非常方便的跟python一样只要导入了函数所在的包就可以直接用了
函数的不定参数:
1.不定参数的类型:
不定参数是指函数传入的参数个数不定。首先要在函数定义的时候定位成接受不定参数的类型。
func myfunc(args ...int){
for _,arg := range args{
fmt.Println(arg)
}
args ...int表示接受不定参数的数量,且类型全为int类型。
形如...type的类型只能作为函数的参数类型存在,而且必须只能是最后一个参数,不能有其他参数。它是一种语法糖(syntactic sugar)意思是对于功能没有影响但是更方便程序员用,增加程序的可读性,减少程序出错。
但是从内部来说 ...type本质上是一个数组切片也就是[ ]type。所以在访问的时候通过数组切片用for循环来访问
2.不定参数的传递:
func myfunc(args ..int){
myfunc3(args...)//将myfunc的参数args直接全部传递给myfunc3
myfunc3(args[1:]...)//形如切片传送
3.任意类型的不定参数传递:
指定类型为interface{}来进行任意类型参数传递则参数列表为(args ...interface{})
4.多返回值
如 func(file *File)Read(b []byte)(n int,err Error)
可以返回n和err。err返回的是错误信息,如果没有就是nil
5.匿名函数和闭包:
匿名函数只是没有名字的函数。跟C不一样的是Go语言中函数也可以当参数传递(跟python是一样的)。匿名函数可以直接复制给一个变量或者执行(只是为了得到返回值)
闭包:闭包就是能够读取其他函数内部变量的函数,在本质上,闭包是把函数内部和函数外部连接起来的桥梁。
自我理解,在函数中设定返回类型为匿名函数,则第一次应用变量名就是匿名函数,再调用变量名就是调用匿名函数。这个匿名函数可以引用这个函数中的各种变量。
#闭包比较难理解自己不懂可以百度
Go语言的流程控制(条件,选择,控制,跳转,闭包)的更多相关文章
- java流程控制与选择控制
流程控制语句 顺序 程序的正常执行 选择 if else多重if,嵌套if,switch; 循环 for whlie,do whlie; 案例1 自己对代码进行改进!!!!!!!!!!!!!!! ...
- Excel VBA入门(三) 流程控制1-条件选择
VBA中的流程控制分为两种,其一是条件结构式的,即根据条件判断的结果去选择性执行相应的语句(块):另一种是循环,即循环地执行语句(块).本节介绍第一种. 1. IF if 语句其实包含有几种形式: ① ...
- 037 01 Android 零基础入门 01 Java基础语法 04 Java流程控制之选择结构 04 switch结构
037 01 Android 零基础入门 01 Java基础语法 04 Java流程控制之选择结构 04 switch结构 本文知识点:Java中的switch结构 选择结构分类 选择结构只有如下2种 ...
- 035 01 Android 零基础入门 01 Java基础语法 04 Java流程控制之选择结构 02 多重if结构
035 01 Android 零基础入门 01 Java基础语法 04 Java流程控制之选择结构 02 多重if结构 本文知识点:Java中的多重if结构 选择结构回顾 if选择结构 注意: 1.条 ...
- 034 01 Android 零基础入门 01 Java基础语法 04 Java流程控制之选择结构 01 流程控制概述
034 01 Android 零基础入门 01 Java基础语法 04 Java流程控制之选择结构 01 流程控制概述 本文知识点:Java中的流程控制相关概念的认识 三大流程控制语句结构的简介 顺序 ...
- 038 01 Android 零基础入门 01 Java基础语法 04 Java流程控制之选择结构 05 案例演示switch结构-星期的表示案例以及总结
038 01 Android 零基础入门 01 Java基础语法 04 Java流程控制之选择结构 05 案例演示switch结构-星期的表示案例以及总结 本文知识点:案例演示switch结构并对sw ...
- 036 01 Android 零基础入门 01 Java基础语法 04 Java流程控制之选择结构 03 嵌套if结构
036 01 Android 零基础入门 01 Java基础语法 04 Java流程控制之选择结构 03 嵌套if结构 本文知识点:Java中的嵌套if结构 什么是嵌套if结构? 概念: 嵌套if结构 ...
- js控制日期选择框datetime-local和select的展开
注: js控制元素展开不受元素css属性的限制,例如opacity,z-index等 1. 使用js控制日期选择框的展开 ios: document.querySelector(".targ ...
- 3015C语言_流程设计
第五章 流程设计 5.1 C语句概述 C语言的语句用来向计算机系统发出指令,一个实际的源程序通常包含若干语句,这些语句用来完成一定的操作任务. 1.其他类型语句 函数调用语句(由函数调用加一个分号构成 ...
- 你好,C++(19)“老师,我这次四级考试过了没有?”——4.2 条件选择语句
4.2 条件选择语句 “老师,我这次四级考试过了没有?” 如果老师被问到这个问题,他会如何回答?是的,他会根据不同的条件选择不同的回答: 如果考试成绩大于等于60,那就回答:“恭喜你,你通过了这次考 ...
随机推荐
- IDEA中编辑HTML格式,不自动缩进问题
在IntelliJ Idea中HTML格式化时,默认<head><body>以及<body>下的标签都不会缩进,这就导致你每次写好html时候格式化的时候所有标签都 ...
- git查漏补缺
1. commit提交注释规范 2. commit 注释没写完或写错了,在不用删除这条commit的情况下,如何更正注释信息 git commit -m '1' git commit --amend ...
- CentOS7.6配置ip
查看CentOS版本信息 [root@localhost ~]# cat /etc/redhat-release CentOS Linux release (Core) 配置ip [root@loca ...
- 吴裕雄 python 神经网络——TensorFlow 图、张量及会话
import tensorflow as tf g1 = tf.Graph() with g1.as_default(): v = tf.get_variable("v", [1] ...
- AMD R7 2700X 安装虚拟机
自己组装的台式机,选用的是微星X470主板,该主板默认的虚拟化技术是关闭的,在bios中也不太容易找到,具体方法如下. [开机或重启]--[按住DEL进入BIOS]--[高级模式F7]--[选择OC] ...
- 使用axios对安卓或者ios低版本兼容性处理
原因:不支持ES6,无法使用promise 解决办法: 1.安装 es6-promise cnpm install es6-promise --save-dev 2.引入 es6-promise im ...
- EF中 GroupJoin 与 Join
数据: GroupJoin: 返回左表所有数据 using (tempdbEntities context = new tempdbEntities()) { var query = context. ...
- 「NOI2016」区间
传送门 Luogu 解题思路 对于选出的区间,我们可以直接用线段树维护区间内单点被覆盖次数最大值. 那么解题重心便落在了选取方式上. 为了让最大值最小,考虑尺取,不能二分,降低效率而且不好写. 先将区 ...
- C:char类型
char字符类型 字符型变量用于存储一个单一字符,在 C 语言中用 char 表示,其中每个字符变量都会占用 1 个字节.在给字符型变量赋值时,需要用一对英文半角格式的单引号(' ')把字符括起来. ...
- linux 管道相关命令(待学)
1.1 cut cut:以某种方式按照文件的行进行分割 参数列表: -b 按字节选取 忽略多字节字符边界,除非也指定了 -n 标志 -c 按字符选取 -d 自定义分隔符,默认为制表符. -f 与-d一 ...