Go 命令行参数处理

命令行参数简介

在 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)
    }
}

参考资源

57.12k 字
43篇文章