Go语言的函数07---闭包练习(ATM存取款)
package main import "fmt" /*
@ATM(闭包练习)
·写一个Atm(函数),返回存款,取款两个内层函数
·存款,取款两个函数,都以一个金额为参数,返回存取之后的余额
·将各自的余额存在函数闭包中
·比尔,马云,你任意存取之后,输出各自余额
*/ func Atm(name string) (func(amount int) (ballance int), func(amount int) (ballance int)) {
/*
内存函数的账户姓名
内存函数的账户余额
*/
var accountName string
var accountBallance int
accountName = name /*欢迎语*/
fmt.Println("欢迎你", accountName) /*定义存款函数*/
saveFunc := func(amount int) (ballance int) {
accountBallance += amount
return accountBallance
} /*定义取款函数*/
drawFunc := func(amount int) (ballance int) {
accountBallance -= amount
return accountBallance
} /*返回存取款函数*/
return saveFunc, drawFunc
} func main() { /*调用闭包函数得到各自的存取款函数副本*/
billSave, billDraw := Atm("Bill")
jackSave, jackDraw := Atm("Jack")
diorsSave, diorsDraw := Atm("Diors") /*各自存款*/
billBallance := billSave(1000000)
jackBallance := jackSave(500000)
diorsBallance := diorsSave(999) /*各自取款*/
diorsBallance = diorsDraw(500)
billBallance = billDraw(300000)
diorsBallance = diorsDraw(300)
jackBallance = jackDraw(400000)
diorsBallance = diorsDraw(100) /*打印余额*/
fmt.Println(billBallance,jackBallance,diorsBallance)
}
输出:
欢迎你 Bill
欢迎你 Jack
欢迎你 Diors
700000 100000 99
Go语言的函数07---闭包练习(ATM存取款)的更多相关文章
- 银行ATM存取款系统(C语言实现)
这里使用的运行工具是DEV C++.老铁们一定要看仔细了.是DEV C++ 仅供借鉴:这个是大一时期写的.大四的时候整理了一下(本人C语言学的也不太好).肯定很多不足和存在漏洞的地方.仅供借鉴.仅供借 ...
- go语言之函数及闭包
一:函数 1 概述: 函数是 Go 程序源代码的基本构造单位,一个函数的定义包括如下几个部分,函数声明关键字 也町. 函数名.参数列表.返回列表和函数体.函数名遵循标识符的命名规则, 首字母的大小写决 ...
- C语言设计ATM存取款界面
这个虽然很简单,但是我还是弄了一会儿,可见有多菜.练习算. 主要考察switch开关语句.do...while语句,页面的跳转我用的是goto,虽然是弊端,可是还是用了,因为太菜啊.大家有好建议的欢迎 ...
- java 使用线程做一个简单的ATM存取款实例.(转)
线程 Thread 类,和 Runable 接口 比较两者的特点和应用领域. 可以,直接继承线程Thread类.该方法编写简单,可以直接操作线程,适用于单重继承情况,因而不能在继承其他类 实现Runn ...
- swift1.2语言函数和闭包函数介绍
swift1.2语言函数和闭包函数介绍 在编程中,随着处理问题的越来越复杂,代码量飞速增加.其中,大量的代码往往相互重复或者近似重复.如果不采有效方式加以解决,代码将很难维护. swift1.2语言函 ...
- 苹果新的编程语言 Swift 语言进阶(六)--函数和闭包
一 .函数 1.1. 函数的定义和调用 函数的定义以funckeyword作为前缀,接着是函数名字,接着跟着一个能够带有參数.也能够不带參数的圆括号.接着用-> 指示函数的返回类型. 函数运行体 ...
- Swift 1.1语言第7章 函数和闭包
Swift 1.1语言第7章 函数和闭包 在编程中,随着处理问题的越来越复杂.代码量飞速添加. 当中,大量的代码往往相互反复或者近似反复.假设不採有效方式加以解决.代码将非常难维护. 为了解决问题, ...
- 【Go语言学习】匿名函数与闭包
前言 入坑 Go 语言已经大半年了,却没有写过一篇像样的技术文章,每次写一半就搁笔,然后就烂尾了. 几经思考,痛定思痛,决定金盆洗手,重新做人,哦不,重新开始写技术博文. 这段时间在研究Go语言闭包的 ...
- 《JS语言精粹》学习笔记 函数部分の闭包
要理解闭包,首先要理解变量作用域,变量的作用域就两种,全局变量和局部变量,函数内部可以直接读取全局变量,函数外部无法读取函数内部的局部变量. 闭包定义:能读取函数内部局部变量的函数就是闭包,而只有函数 ...
随机推荐
- IPC 方法分类
IPC 方法分类 进程间通信 shell out 被调用程序在执行完毕之前接管用户的键盘和显示,退出后,调用程序重新控制键盘和显示并继续运行. 专门程序通常有文件系统与父进程进行通信,方法是在指定位置 ...
- OO_UNIT4_SUMMARY
经过一个学期的学习,OO课程终于落下帷幕.本次博客会首先对第四单元作业的架构进行分析,再对OO课程进行总体回顾,最后是个人的建议与体会. 一.第四单元三次作业架构设计 1.第一次作业 第一次作业是对类 ...
- 858. Mirror Reflection
There is a special square room with mirrors on each of the four walls. Except for the southwest cor ...
- Salesforce 集成篇零基础学习(一)Connected App
本篇参考: https://zhuanlan.zhihu.com/p/89020647 https://trailhead.salesforce.com/content/learn/modules/c ...
- 4-1 Postman脚本的应用
前面我们讲解了在接口发送每个请求,得到响应.这是接口本身的问题.但是"请求前后"的动作,是怎么处理的?比如在发送一个请求前,需要获取当前的时间戳,或者对我们的变量进行参数化,设置变 ...
- thinkphp5 ztree树形菜单
教程:http://makaidong.com/zjfjava/4074_5873678.html 下载:https://github.com/zTree/zTree_v3
- Ubuntu下修改Nexus 5的boot.img--改user模式为debug模式
博客地址:http://blog.csdn.net/qq1084283172/article/details/52422205 在学习Android逆向的时候,总会用到Android的调试模式.一般情 ...
- 查找和定位Android应用的按钮点击事件的代码位置基于Xposed Hook实现
本文博客地址:https://blog.csdn.net/QQ1084283172/article/details/80956455 在进行Android程序的逆向分析的时候,经常需要通过Androi ...
- 【Git】2. Git常用命令详解、版本切换原理
一.新增文件 1.设置用户签名 签名的作用就是为了区分不同的人,方便查看版本的时候知道操作的人是谁.首次安装好git之后必须设置一下签名,否则无法提交代码. 另外,这里设置的签名跟你登录到远程仓的账号 ...
- openstack虚拟机从数据库修改卷虚拟机backend操作
由于意外故障,volume-type其中一个backend后段出现性能问题,客户云主机出现卡顿. 因此临时从ceph将系统卷导出,并导入至同一个backend的另一个后端,并启动虚拟机. Nova C ...