Go程序:利用命令行参数做四则运算

举报
howard2005 发表于 2021/12/30 01:36:55 2021/12/30
【摘要】 1、编写源程序compute.go /* * 功能:利用命令参数进行加减乘除运算 * 日期:2015年6月18日  */ // compute.go package main import (     ...
1、编写源程序compute.go

/*
* 功能:利用命令参数进行加减乘除运算
* 日期:2015年6月18日
 */

// compute.go
package main

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

var Usage = func() {
    fmt.Println("USAGE: <integer1> <operator> <integer2>")
    fmt.Println("EXAMPLE: 4 + 5")
    fmt.Println("EXAMPLE: 24 - 15")
    fmt.Println("EXAMPLE: 6 * 5")
    fmt.Println("EXAMPLE: 24 / 6")
}

func main() {
    args := os.Args // 获取命令行参数
    if len(args) != 4 {
        Usage()
    } else {
        switch args[2] {
        case "+":
            n1, err1 := strconv.Atoi(args[1])
            n2, err2 := strconv.Atoi(args[3])
            if err1 == nil && err2 == nil {
                result := n1 + n2
                fmt.Println(n1, "+", n2, "=", result)
            } else {
                Usage()
            }
        case "-":
            n1, err1 := strconv.Atoi(args[1])
            n2, err2 := strconv.Atoi(args[3])
            if err1 == nil && err2 == nil {
                result := n1 - n2
                fmt.Println(n1, "-", n2, "=", result)
            } else {
                Usage()
            }
        case "*":
            n1, err1 := strconv.Atoi(args[1])
            n2, err2 := strconv.Atoi(args[3])
            if err1 == nil && err2 == nil {
                result := n1 * n2
                fmt.Println(n1, "*", n2, "=", result)
            } else {
                Usage()
            }
        case "/":
            n1, err1 := strconv.Atoi(args[1])
            n2, err2 := strconv.Atoi(args[3])
            if err1 == nil && err2 == nil {
                result := n1 / n2
                fmt.Println(n1, "/", n2, "=", result)
            } else {
                Usage()
            }
        default:
            Usage()
        }
    }
}

2、生成可执行文件compute.exe

在命令行提示符后,输入 go build compute.go 即可。

3、运行可执行文件,传入命令行参数


不传入命令行参数,就会打印提示信息,告知用户正确用法:

4、小结 
(1)利用os.Args获得命令行参数
(2)利用strconv.Atoi()函数将字符串转换成整数。 

5、说明
compute 3 * 6 

四个命令行参数:

args[0] = "compute"
args[1] = "3" 
args[2] = "*" 
args[3] = "6" 

6、代码优化
/*
* 功能:利用命令参数进行加减乘除运算
* 日期:2015年6月18日
 */

// compute.go
package main

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

var Usage = func() {
    fmt.Println("USAGE: <integer1> <operator> <integer2>")
    fmt.Println("EXAMPLE: 4 + 5")
    fmt.Println("EXAMPLE: 24 - 15")
    fmt.Println("EXAMPLE: 6 * 5")
    fmt.Println("EXAMPLE: 24 / 6")
}

func main() {
    args := os.Args // 获取命令行参数
    if len(args) != 4 {
        Usage()
    } else {
        n1, err1 := strconv.Atoi(args[1])
        n2, err2 := strconv.Atoi(args[3])
        if err1 == nil && err2 == nil {
            switch args[2] {
            case "+":
                result := n1 + n2
                fmt.Println(n1, "+", n2, "=", result)
            case "-":
                result := n1 - n2
                fmt.Println(n1, "-", n2, "=", result)
            case "*":
                result := n1 * n2
                fmt.Println(n1, "*", n2, "=", result)
            case "/":
                result := n1 / n2
                fmt.Println(n1, "-", n2, "=", result)
            default:
                Usage()         
            }               
        } else {
            Usage()
        }
    }
 

7、在Eclipse里执行
选中compute.go,单击右键,选择【Run As】下的【Run Configurations...】

在【Arguments】文本框里输入命令行参数,比如 5 - 6,单击【Run】按钮:

文章来源: howard2005.blog.csdn.net,作者:howard2005,版权归原作者所有,如需转载,请联系作者。

原文链接:howard2005.blog.csdn.net/article/details/79333118

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。