go获取命令参数-《GO开发知识笔记》

admin 2025-11-04 01:26:58 编程 来源:ZONE.CI 全球网 0 阅读模式
  • 第一种方法:os库
  • 第二种方法:flag包
  • 第三种方法:flag包另一种写法
    1. package main
    2. import (
    3. "bufio"
    4. "fmt"
    5. "os"
    6. )
    7. func main() {
    8. reader := bufio.NewReader(os.Stdin)
    9. fmt.Println("请输入你想要输入的内容,按回车结束")
    10. fmt.Print("-> ")
    11. text, err := reader.ReadString('\n')
    12. if err != nil {
    13. panic(fmt.Errorf("发生致命错误: %w \n", err))
    14. }
    15. //TODO 下面我们就可以根据text输入的内容进行调用不同的函数了。
    16. fmt.Println("刚接收到的内容是:",text)
    17. }

    第一种方法:os库

    os可以通过变量Args来获取命令参数,os.Args返回一个字符串数组,其中第一个参数就是执行文件本身。

    1. package main
    2. import (
    3. "fmt"
    4. "os"
    5. )
    6. func main() {
    7. fmt.Println("命令行的参数有", len(os.Args))
    8. // 遍历 os.Args 切片,就可以得到所有的命令行输入参数值
    9. for i, v := range os.Args {
    10. fmt.Printf("args[%v]=%v\n", i, v)
    11. }
    12. }

    结果:

    1. > go run ./main.go laofan 123 456 789
    2. 命令行的参数有 5
    3. args[0]=Temp\go-build\b001\exe\main.exe
    4. args[1]=laofan
    5. args[2]=123
    6. args[3]=456
    7. args[4]=789
    8. >

    第二种方法:flag包

    如像 mysql 那样:mysql -u root -p 123456,可以指定输入内容,输入顺序可变。 flag包实现了命令行参数的解析。

    使用flag来操作命令行参数,支持的格式如下:像flag.Int、flag.Bool、flag.String这样的函数格式都是一样的,第一个参数表示参数名称,第二个参数表示默认值,第三个参数表示使用说明和描述。flag.StringVar这样的函数第一个参数换成了变量地址,后面的参数和flag.String是一样的。

    1. package main
    2. import (
    3. "flag"
    4. "fmt"
    5. )
    6. func main() {
    7. // 定义几个变量,用于接收命令行的参数值
    8. var user string
    9. var password string
    10. var host string
    11. var port int
    12. // &user 就是接收命令行中输入 -u 后面的参数值,其他同理
    13. flag.StringVar(&user, "u", "root", "账号,默认为root")
    14. flag.StringVar(&password, "p", "", "密码,默认为空")
    15. flag.StringVar(&host, "h", "localhost", "主机名,默认为localhost")
    16. flag.IntVar(&port, "P", 3306, "端口号,默认为3306")
    17. // 解析命令行参数写入注册的flag里
    18. flag.Parse()
    19. // 输出结果
    20. fmt.Printf("user:%v\npassword:%v\nhost:%v\nport:%v\n",
    21. user, password, host, port)
    22. }

    结果:

    1. > go run ./main.go -p 123 -u laofan -P 3306 -h 127.0.0.1
    2. user:laofan
    3. password:123
    4. host:127.0.0.1
    5. port:3306
    6. >

    第三种方法:flag包另一种写法

    1. package main
    2. import (
    3. "flag"
    4. "fmt"
    5. )
    6. func main () {
    7. //获取命令参数
    8. Act := flag.String("act", "", "is ok")
    9. date := flag.String("date", "", "id")
    10. // 解析命令行参数写入注册的flag里
    11. flag.Parse()
    12. fmt.Println("act :", *Act)
    13. fmt.Println("date :", *date)
    14. }

    结果:

    1. > go run ./main.go -act laofan -date today
    2. act : laofan
    3. date : today
    4. >

    参考:https://www.fujieace.com/golang/os-flag.html

    以太坊cppgolang区别 编程

    以太坊cppgolang区别

    以太坊是一种去中心化的开源平台,它采用智能合约技术,旨在构建和运行不受干扰的分布式应用程序。作为目前最受欢迎的区块链平台之一,以太坊提供了多种编程语言的支持,其
    progolang 编程

    progolang

    Go语言(Golang)是由Google开发的一门静态类型编程语言。作为一名专业的Golang开发者,我深知这门语言的优势和特点。在本文中,我将介绍Golang
    golangn个发送者 编程

    golangn个发送者

    Golang是一种开源的编程语言,由Google团队开发,旨在提高程序的并发性和简化软件开发过程。在Go语言中,有时需要向多个接收者发送信息。本文将介绍如何在G
    golang技能图谱 编程

    golang技能图谱

    从互联网行业的快速发展到人工智能技术的日益成熟,各种编程语言也应运而生。而在这众多的编程语言中,Golang(即Go)作为一门强大且高效的开发语言备受关注。Go
    评论:0   参与:  8