开发者学堂课程【GO 语言核心编程-基础语法、数组、切片、Map:为什么需要函数】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/625/detail/9591
为什么需要函数
函数是编程语言里面比特别重要的一个概念。而且函数里面包括模块化编程思想。
完成这样一个需求:
输入两个数,再输入一个运算符(+,-,*,/),得到结果。
要求写一段代码来计算两个数的(+,-,*,/),但是他的计算结果和运算符是有联系的。
先使用传统的方式解决,看看有什么问题
写一段代码演示一下:
新建一个 chapter06的文件,在里面新建文件夹 fundemo,写一个文件 main go
Package main
Import“fmt”
Func main(){
//请大家完成这样一个需求:
//输入两个数,再输入一个运算符(+,-,*,/),得到结果。
//分析思路。。。。
Var n1 float64
Var n2 float64
Var operator(操作符) byte
Var res(结果) float64
Switch operator{
Case ‘+’:
Res=n1+n2
Case‘-’:
Res=n1-n2
Case ‘*’:
Res=n1*n2
Case‘/’:
Res=n1/n2
Default:
Fmt.println(“操作符号错误...”)
}
Fmt.println(“res=”,res)
就这样代码就写完了,假设给 n1赋值,从终端输入·。可以运行代码看看效果。
分析一下上面代码的问题:
提一个问题,写完这段代码敢不敢保证在其他位置没有这个需求了。假设写了很多代码,下面又有需求,计算,怎么办呢?
//代码...
//代码...
//代码...
//输入两个数,num1,num2,计算(+,-,*,/),得到结果。
n1=4.5
n2=6.7
Byte=’*’
Switch operator{
Case ‘+’:
Res=n1+n2
Case‘-’:
Res=n1-n2
Case ‘*’:
Res=n1*n2
Case‘/’:
Res=n1/n2
这样确实没错误,但是发现这段代码已经出现过 n次了,如果下面又有需求,是不是又得继续,问题就出现了。
问题:
1) 上面的写法是可以完成功能,但是代码冗余
2) 同时不利于代码的维护
3) 函数可以解决这个问题