gpt4 book ai didi

golang命令行参数解析问题

转载 作者:行者123 更新时间:2023-12-01 22:39:36 25 4
gpt4 key购买 nike

当我在下面运行代码时

package main

import (
"flag"
"fmt"
)

func main() {

i := flag.Int("i", 0, "Any integer value")
b := flag.Bool("b", false, "Any boolean value")
s := flag.String("s", "Hello", "Any string value")

flag.Parse()

fmt.Println("-i", *i)
fmt.Println("-b", *b)
fmt.Println("-s", *s)
}
go run main.go -i 33 -b true -s hi

-i 33
-b true
-s Hello

go run main.go -i 33 -s hi

-i 33
-b false
-s hi

go run main.go -i 33 -s hi -b true

-i 33
-b true
-s hi

go run main.go -i 33 -b true -s hi

-i 33
-b true
-s Hello

为什么“-s”命令行参数在最后通过时不起作用

提前致谢

最佳答案

这是因为 -b bool 标志。 bool 标志测试标志的存在,它不测试标志的参数。那是:

go run main.go -b 

将输出 -b true , 和
go run main.go

将输出 -b false .
go run main.go -b false

将输出 -b true , 因为 -b给出了标志。 false不是一个公认的论点,所以它在那里停止处理。

如果你想使用 true/ false ,你必须使用这种格式:
go run main.go -i 33 -b=false -s hi

这也应该有效(这里, -btrue ):
go run main.go -i 33 -b -s hi

关于golang命令行参数解析问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60081168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com