流程控制
if语句
if后条件判断语句没有()
if后面条件成立则执行{}里程序,不成立则跳过
if
运行实例
1 | package main |
运行结果:3
if…else…
if后条件不成立则执行else{}里语句
运行实例
1 | package main |
运行结果:a不大于3
if…else if…else…
第一个if不成立则判断第二个,直到所有if不成立执行else{}里程序,如果有一个if条件成立,则执行其{}内语句并跳出判断
运行实例
1 | package main |
运行结果:a==3
switch语句
switch后写的是变量本身,不是判断条件,变量与case等式都不成立则执行default,go语言保留了break关键字,默认情况下不写,默认包含
运行实例:
1 | package main |
运行结果:按下的是 3 楼
fallthrough关键字
fallthrough表示不跳出switch循环,后面条件无条件执行
运行实例:
1 | package main |
运行结果:
1 | 按下的是 3 楼 |
switch语句其他用法
switch语句支持一个初始化语句,初始化语句和变量本身以分号分割
运行实例:
1 | package main |
运行结果:按下的是 3 楼
switch后可以没有变量,case后面可以加判断语句
运行实例:
1 | package main |
运行结果:良好
switch语句case后可以加多个常量
运行实例:
1 | package main |
运行结果:按下的是 3 楼
for循环语句
- 语法
for 初始化条件;判断条件;条件变化{}
判断条件是否为真,如果为真执行循环体,如果为假跳出循环,如果不写判断条件则陷入死循环
1 | package main |
range迭代器
迭代打印每个元素,默认返回两个值:一个元素位置,一个元素本身
1 | package main |
运行结果:
1 | 0,a |
其他用法
1 | for i :=range str { |
跳转语句
break和continue
break可用于for、switch、select,而continue只能用于for循环
braek运行实例
1 | package main |
运行结果
1 | 1 |
continue运行实例
1 | package main |
运行结果
1 | 1 |
goto跳转
goto可以用在任何地方,但不能夸函数使用,用goto跳转前必须在当前函数内定义标签
运行实例
1 | package main |
运行结果:
1 | 111111111111111111111111111111 |
函数
在golang中,函数基本组成为:关键字func、函数名、参数列表、返回值、函数体和返回语句
1 | func/*关键字*/ name/*函数名*/(/*参数列表*/)(a string,b int/*返回类型*/){ |
自定义函数
自定义函数不调用不会执行
无参无返回值函数
1 | package main |
运行结果:
1 | 我是Myfunc函数 |
有参无返回值函数
普通参数
1 | package main |
运行结果
1 | 10 10 |
不定参数
不定参数是指函数传入的参数个数为不定数量
1 | package main |
运行结果
1 | 100 200 |
不定参数,只能放在形参中的最后一个参数
不定参数的传递
1 | package main |
运行结果
1 | 12345 |
无参有返回值
有返回值的参数,必须有明确的终止语句(return语句),否则会引发编译错误,
1 | package main |
运行结果
1 | 1 |
有参有返回值
1 | package main |
运行结果
1 | 10 |
递归函数
递归函数可以直接或间接调用自身
递归函数通常有相同的结构:一个跳出条件和一个递归体。所谓跳出条件是根据传入的参数判断是否需要停止递归,而递归体则是函数自身所做的一些处理
普通函数的调用流程
1 | package main |
运行结果
1 | funcb a= 1 |
递归函数调用流程
1 | package main |
1 | 1 |
数字的累加
1 | package main |
运行结果:
1 | 5050 |
函数类型
可以通过type给一个函数类型起名,并根据别名声明一个变量
1 | package main |
运行结果
1 | 20 |
回调函数
1 | package main |
运行结果
1 | funccc:30 |
匿名函数与闭包
详解(<https://blog.csdn.net/lengyuezuixue/article/details/78527667)(https://www.cnblogs.com/williamjie/p/9875362.html)
匿名函数基本使用
1 | package main |
运行结果
1 | 10 |
定义匿名函数同时调用
1 | package main |
运行结果
1 | 10 abc |
带参数的匿名函数
1 | package main |
运行结果
1 | 1 2 |
匿名函数有参有返回值
1 | package main |
运行结果
1 | 20 10 |