Go程序:利用命令行参数做四则运算
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】按钮: