命令行参数简介
在 Go 中,可以通过 os.Args
获取命令行参数。os.Args
是一个字符串切片,其中:
os.Args[0]
是程序名称os.Args[1:]
包含所有命令行参数
基本用法
获取所有参数
1
2
3
4
5
6
7
8
9
10
11
12
13
| package main
import (
"fmt"
"os"
)
func main() {
// 遍历所有参数
for i, arg := range os.Args {
fmt.Printf("参数 %d: %s\n", i, arg)
}
}
|
运行示例
1
2
3
4
5
6
7
8
| # 运行程序
go run main.go arg1 arg2 arg3
# 输出结果
参数 0: /tmp/go-build123456789/b001/exe/main
参数 1: arg1
参数 2: arg2
参数 3: arg3
|
参数处理
参数解析示例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| package main
import (
"fmt"
"os"
"strconv"
)
func main() {
// 检查参数数量
if len(os.Args) < 2 {
fmt.Println("请提供至少一个参数")
os.Exit(1)
}
// 处理不同类型的参数
for i := 1; i < len(os.Args); i++ {
arg := os.Args[i]
// 尝试转换为整数
if num, err := strconv.Atoi(arg); err == nil {
fmt.Printf("数字参数: %d\n", num)
} else {
fmt.Printf("字符串参数: %s\n", arg)
}
}
}
|
参数验证
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
| package main
import (
"fmt"
"os"
"strings"
)
func main() {
// 参数验证示例
if len(os.Args) != 3 {
fmt.Println("用法: program <命令> <参数>")
os.Exit(1)
}
command := os.Args[1]
value := os.Args[2]
// 命令验证
switch command {
case "add":
fmt.Printf("添加: %s\n", value)
case "remove":
fmt.Printf("删除: %s\n", value)
default:
fmt.Printf("未知命令: %s\n", command)
os.Exit(1)
}
// 参数验证
if strings.TrimSpace(value) == "" {
fmt.Println("参数不能为空")
os.Exit(1)
}
}
|
参考资源