Golang命令行参数

请问在Golang中如何解析命令行参数?标准库flag和第三方库如cobra有什么区别?能否给出一个简单的示例代码展示基本用法?另外,在处理复杂命令行参数时有哪些最佳实践?

2 回复

Golang使用os.Args获取命令行参数,os.Args[0]是程序名,后续为传入参数。也可用flag包处理更复杂的参数解析,支持类型和默认值。

更多关于Golang命令行参数的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


在Go语言中,可以使用标准库的 os 包和 flag 包来处理命令行参数。

1. 使用 os.Args

os.Args 是一个字符串切片,包含程序名和所有传入的参数。

示例代码:

package main

import (
    "fmt"
    "os"
)

func main() {
    if len(os.Args) > 1 {
        fmt.Println("命令行参数:", os.Args[1:])
    } else {
        fmt.Println("未提供命令行参数")
    }
}

运行:

./program arg1 arg2

2. 使用 flag

flag 包支持定义和解析命令行标志(如 -name=value)。

示例代码:

package main

import (
    "flag"
    "fmt"
)

func main() {
    var name string
    var age int
    var married bool

    flag.StringVar(&name, "name", "匿名", "用户名")
    flag.IntVar(&age, "age", 0, "年龄")
    flag.BoolVar(&married, "married", false, "婚姻状态")

    flag.Parse()

    fmt.Printf("姓名:%s, 年龄:%d, 已婚:%t\n", name, age, married)
}

运行:

./program -name=张三 -age=30 -married=true

主要函数:

  • flag.TypeVar():绑定变量到指定标志。
  • flag.Parse():解析命令行参数。
  • flag.Args():获取非标志参数。

使用 flag 包可以自动生成帮助信息(通过 -h--help)。

回到顶部