使用go实现基于命令行的计算器程序

项目目录结构

calcs.go源文件

Copy
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源文件

Copy
package simplemath func Add (a int,b int) int { return a + b }

add_test.go源文件,测试程序

Copy
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源文件

Copy
package simplemath import ( "math" ) func Sqrt(i int) int { v := math.Sqrt(float64(i)) return int(v) }

sqrt_test.go源文件,测试程序

Copy
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

测试结果

posted @   Yxh_blogs  阅读(1153)  评论(1编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示