我正在编写一些代码,需要捕获参数并将它们通过fmt.Println
传递(我想要它的默认行为,即用空格分隔参数并在后面加上换行符)。但是flag.Args()
返回[]string
而不是[]interface{}
。以下是示例代码:
package main
import (
"fmt"
"flag"
)
func main() {
flag.Parse()
fmt.Println(flag.Args()...)
}
这会返回以下错误:
./example.go:10: cannot use args (type []string) as type []interface {} in function argument
这是一个bug吗?fmt.Println
不应该接受任何数组吗?顺便说一下,我也尝试过这样做:
var args = []interface{}(flag.Args())
但我得到了以下错误:
cannot convert flag.Args() (type []string) to type []interface {}
有没有一种“Go”方式可以解决这个问题?
go run test.go some test flags
)时,当将flags.Args()...
更改为flag.Args()
时,它似乎可以工作(输出是[some test flags]
,后跟换行符;也似乎可以使用实际标志进行注册)。不会假装理解为什么,而且Stephen的答案更加详细 :) - RocketDonkey