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,那就回答:“恭喜你,你通过了这次考 ...
随机推荐
- 8.5-Day1T1--Asm.Def 谈笑风生
题目大意 m个操作, 1:添加一个字符串 2:查询字符串s是否被添加过(中至多包含一个通配符“*”) 题解 trie树可以得部分分 用map映射 '*'就枚举26个英文字母来判断就可以了 #inclu ...
- 6_4 破损的键盘(UVa11988)<链表>
你用了一个有点坏掉的键盘打字,该键盘会自动按下”Home”键与“End”键,直到打完整个内容以前,你都没有发现到这个问题.本题给定键盘输出的字串(包含Home与End),请你输出该字串在屏幕显示的内容 ...
- KafKa集群安装、配置
一.事前准备 1.kafka官网:http://kafka.apache.org/downloads. 2.选择使用版本下载. 3.kafka集群环境准备:(linux) 192.168.145.12 ...
- NIO的理解
一.缓冲区(Buffer):在java NIO中负责数据的存取,实际上就是数组,用于存储不用数据类型的数据,根据数据类型不同(boolean除外),提供了相应类型的缓冲区(ByteBuffer,Cha ...
- CDH搭建大数据集群(5.10.0)
纠结了好久,还是花钱了3个4核8G的阿里云主机,且行且珍惜,想必手动搭建过Hadoop集群的完全分布式.HBase的完全分布式的你(当然包括我,哈哈),一定会抱怨如此多的配置,而此时CDH正是解决我们 ...
- P1217
最快的办法就是打表了...不然怎么都会TLE. 先计算出给定最大范围内的所有回文质数: #include <bits/stdc++.h> using namespace std; #def ...
- rapidxml编写xml文件(er)
一.以rapidxml::node_declaration形式写xml文件第一行 int write(void) { ; rapidxml::xml_document<> doc; rap ...
- idea新建项目相关名词意义
新建项目中的对比 建完之后的项目对比 对比 新建中Artifact的名称对应maven中名字 新建中package的名字对应的是项目中src下package名字 新建中project name的名字对 ...
- Git - 常用命令, cheatsheet
git init git add <filename1> <filename2> git add . git checkout -- <filename> git ...
- laravel 报错The Mix manifest does not exist.
这是因为我们在 resources/views/layouts/app.blade.php 中使用 mix() 方法,而我们还未运行 Laravel Mix 进行编译,找不到 mix-manifest ...