#自学课程#《放学你别走第一季之GO语言学习》Day2打卡

【Day2任务】
学习GO语言的基础数据类型,命名,变量,常量,格式化输入输出,类型转换及别名;运算符。
用学到的知识实现下面的题目:
用Go语言实现一个计算器程序,实现两个操作数的加、减、乘、除四种基本类型的操作,并可以指定最终计算结果的数据类型。
打卡时间:后天(2月22日)18:30
打卡形式:代码运行截图+现场面对面讨论
package main

import (
"fmt"
"strconv"
"os"
)

func help(){

fmt.Println("请依次按顺序输入运算方法(add,sub,mul,div),数字1,数字2这三个参数,用空格隔开")

}

func errorHappen(no int) {

switch no {

case 1:
fmt.Println("参数错误!更多帮助信息请使用参数'help'!")

case 2:
fmt.Println("除法计算时,除数不能为0!更多帮助信息请使用参数'help'!")

default:
fmt.Println("未知错误!更多帮助信息请使用参数'help'!")
}
}

func main(){

const HELP_FLAG = "help"
const PRECISION = 2


args := os.Args

//输入帮助符号
if len(args) == 2 && HELP_FLAG == args[1] {
help()
os.Exit(0)
}

//判断参数传递是否正确
if len(args) < 3 || args == nil {
errorHappen(1)
os.Exit(0)

}


//获取计算方法
operator := args[1]
result := 0.0

//使用switch case 实现流程控制
switch operator {

case "add":{

number1, error1 := strconv.ParseFloat(args[2], PRECISION)
number2, error2 := strconv.ParseFloat(args[3], PRECISION)

if error1 == nil && error2 == nil {
result = number1 + number2

}

}


case "sub":{

number1, error1 := strconv.ParseFloat(args[2], PRECISION)
number2, error2 := strconv.ParseFloat(args[3], PRECISION)

if error1 == nil && error2 == nil {
result = number1 - number2

}

}

case "mul":{

number1, error1 := strconv.ParseFloat(args[2], PRECISION)
number2, error2 := strconv.ParseFloat(args[3], PRECISION)

if error1 == nil && error2 == nil {
result = number1 * number2

}

}

case "div":{

//判断除数是否为0
if "0" == args[3] {
errorHappen(2)
os.Exit(0)
}

number1, error1 := strconv.ParseFloat(args[2], PRECISION)
number2, error2 := strconv.ParseFloat(args[3], PRECISION)

if error1 == nil && error2 == nil {
result = number1 / number2

}

}

default:
help()

}

//打印结果
fmt.Println("计算结果为:",result)

}

微信图片_20190222145306.png

 

0 个评论

要回复文章请先登录注册