使用go实现基于命令行的计算器程序
2024-08-29 15:56:30
项目目录结构
calcs.go源文件
package main
import (
"fmt"
"os"
"strconv"
"myapp/simplemath"
)
var Usage = func() {
fmt.Println("USAGE: calcs command [arguments] ...")
fmt.Println("\nThe commands are:\n\tadd\tAddition of two values.\n\tsqrt\tSquare root of a ono-negative value.")
}
func main() {
args := os.Args//接受命令行参数
if args == nil || len(args) < 3 {
Usage()
return
}
switch args[1] {
case "add":
if len(args) != 4{
fmt.Println("USAGE:calcs add <integer1> <interger2>")
return
}
v1,err1 := strconv.Atoi(args[2])
v2,err2 := strconv.Atoi(args[3])
if err1 != nil || err2 != nil {
fmt.Println("USAGE: calcs add <integer1> <integer2>")
return
}
ret := simplemath.Add(v1,v2)
fmt.Println("Result: ",ret)
case "sqrt":
if len(args) != 3 {
fmt.Println("USAGE: calcs sqrt <integer>")
}
v , err := strconv.Atoi(args[2])
if err != nil {
fmt.Println("USAGE: calcs sqrt <integer>")
return
}
ret := simplemath.Sqrt(v)
fmt.Println("Result: ",ret)
default:
Usage()
}
}
add.go源文件
package simplemath
func Add (a int,b int) int {
return a + b
}
add_test.go源文件,测试程序
package simplemath
import "testing"
func TestAdd(t *testing.T) {
r := Add(1,2)
if r != 3 {
t.Errorf("Add(1,2) failed. Got %d,expected 3.",r)
}
println(r)
}
sqrt.go源文件
package simplemath
import (
"math"
)
func Sqrt(i int) int {
v := math.Sqrt(float64(i))
return int(v)
}
sqrt_test.go源文件,测试程序
package simplemath
import "testing"
func TestSqrt(t *testing.T) {
v := Sqrt(16)
if v != 4 {
t.Errorf("Sqrt(16) failed. Got %v,expected 4.",v)
}
println(v)
}
然后编译calcs.go
测试结果
最新文章
- Android无线调试
- js与jquery异同
- redis windows下使用及redis命令
- php如何支持实现多线程并发
- Java中的的XML文件读写
- 《转》Ubuntu 12.04常用的快捷键
- CSS如何实现图片上下垂直居中
- Mac Maven java_home错误
- PHP&#160;Fuzzing行动——源码审计
- mac itunes ios 7 升级 出现 this device isn&#39;t eligible for the requested build
- zabbix监控nginx连接状态(转)
- ASP.Net MVC 数据处理
- 函数的属性和方法之call、apply 及bind
- github使用步骤
- Python中late-binding-closures
- BZOJ4942 NOI2017整数(线段树)
- hdu 2157 从a点走到b点刚好k步的方案数是多少 (矩阵快速幂)
- 阿里八八Alpha阶段Scrum(12/12)
- 20172302『Java程序设计』课程 结对编程练习_四则运算第二周阶段总结
- fiddler抓包https
热门文章
- 使用 Django1.11搭建blog项目
- Hadoop实战-Flume之Source replicating(十四)
- OpenCV Machine Learning 之 正态贝叶斯分类器 (Normal Bayes Classifier)
- 20145239杜文超 《Java程序设计》实验二 Java面向对象程序设计实验报告
- hadoop —— MapReduce例子 (数据排序)
- kvm初体验之八:调整vm的vcpu, memory, disk大小
- css中字体大小在不同浏览器兼容性问题
- unreal network
- ICE 迁移64位安装问题
- 从CWnd::GetSafeHwnd实现得到的知识