项目目录结构

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

测试结果

使用go实现基于命令行的计算器程序的更多相关文章

  1. 如何创建一个基于命令行工具的跨平台的 NuGet 工具包

    命令行可是跨进程通信的一种非常方便的手段呢,只需启动一个进程传入一些参数即可完成一些很复杂的任务.NuGet 为我们提供了一种自动导入 .props 和 .targets 的方法,同时还是一个 .NE ...

  2. Linux下基于命令行的抓包方法

    大家可能都已经对著名的抓包工具Ethereal比较熟悉了,这里再介绍一种基于命令行的抓包工具tcpdump. 举例:抓本机1813端口上的数据,并将抓包结果保存在test.cap文件中 然后在本地可以 ...

  3. POP3:基于命令行的电子邮件(EMail)在线查看和批量下载工具

    使用该工具可以在不安装outlook和foxmail等邮件客户端的情况下快速下载指定邮箱的邮件,并将下载的邮件以eml格式进行保存. 附: 查看eml格式的邮件可使用 EmlReader 工具,该工具 ...

  4. win10 uwp 使用 msbuild 命令行编译 UWP 程序

    原文:win10 uwp 使用 msbuild 命令行编译 UWP 程序 版权声明:博客已迁移到 http://lindexi.gitee.io 欢迎访问.如果当前博客图片看不到,请到 http:// ...

  5. windos命令行下的程序编写

    1.命令行下写程序. 写程序一定要用IDE?不,我还可以用记事本呢.呵呵,写程序一定要用记事本?? ———————————————— 命令行下输入copy con test.txt后回车可在相应目录下 ...

  6. [python]小练习__创建你自己的命令行 地址簿 程序

    创建你自己的命令行 地址簿 程序. 在这个程序中,你可以添加.修改.删除和搜索你的联系人(朋友.家人和同事等等)以及它们的信息(诸如电子邮件地址和/或电话号码). 这些详细信息应该被保存下来以便以后提 ...

  7. 使用 GDB 调试需要命令行参数的程序

    使用 gdb 命令提供的 --args 选项可以调试需要命令行参数的程序,如下: gdb --args a.out arg1 arg2 arg3

  8. 命令行运行Java程序时出现错误

    在命令行运行Java程序时出现下面错误 Error: Could not create the Java Virtual Machine. Error: A fatal exception has o ...

  9. 设置PATH 环境变量、pyw格式、命令行运行python程序与多重剪贴板

    pyw格式简介: 与py类似,我认为他们俩卫衣的不同就是前者运行时候不显示终端窗口,后者显示 命令行运行python程序: 在我学习python的过程中我通常使用IDLE来运行程序,这一步骤太过繁琐( ...

随机推荐

  1. Grunt是什么,以及它的一些使用方法

    ♥什么是Grunt Grunt和 Grunt 插件是通过 npm 安装并管理的,npm是 Node.js 的包管理器.grunt是基于node 更多插件请访问:http://www.gruntjs.n ...

  2. t60替换alt,super,ctrl

    发现T60的左边在ctrl 与 alt 有个win 键,所以就进行了映射 网上有一个把alt->ctrl, super-> alt, ctrl->super的script, 见 ht ...

  3. jquery Jsonp的使用

    <script type="text/javascript"> $(function(){ $.ajax({ url:"test", jsonpCa ...

  4. Brotli

    https://engineering.linkedin.com/blog/2017/05/boosting-site-speed-using-brotli-compression?utm_sourc ...

  5. 题解 P1387 【最大正方形】

    传送门 搞不清楚为什么这一题要DP . . . . . . 思路: \(n\le100\),考虑暴力. 要求一大块区间内都是1,考虑前缀和. 在矩阵中求一个符合条件的子矩阵,考虑\(n^3\)的&qu ...

  6. Golang JSON操作汇总

    直接把结构体编码成json数据 package main import ( "encoding/json" "fmt" _ "os" ) t ...

  7. (转)ARCGIS中坐标转换及地理坐标、投影坐标的定义

    原文地址:http://blog.sina.com.cn/s/blog_663d9a1f01017cyz.html 1.动态投影(ArcMap) 所谓动态投影指,ArcMap中的Data 的空间参考或 ...

  8. curl下载安装

    curl下载地址 https://curl.haxx.se/download.html 选择windows generic 下的 下载安装 安装完后解压配置系统环境变量 CURL_HOME      ...

  9. Listfragment 列表标题 显示内容

    activity_main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout ...

  10. IO多路复用之Reactor模式

    首先,我们来看看同步和异步. 在处理 IO 的时候,阻塞和非阻塞都是同步 IO.只有使用了特殊的 API 才是异步 IO. 接下来,我们来看看Linux下的三大同步IO多路复用函数 fcntl(fd, ...