我有一个程序'readfile.go',我想把命令行参数os.Args [1]也作为'readfile.go'.
然而,"go run"认为它是自身的附加参数而不是输出可执行文件.是否有一个标志可以告诉'go run'这是可执行文件的参数?
mvaidya@mvaidya-VirtualBox:~/junkeork$ go run readfile.go readfile.go package main: case-insensitive file name collision: "readfile.go" and "readfile.go" mvaidya@mvaidya-VirtualBox:~/junkeork$
错误:
package main:不区分大小写的文件名冲突:"readfile.go"和"readfile.go"
Sto*_*ica 12
您可以使用--从参数中分隔gofiles:
go run readfile.go -- readfile.go
Run Code Online (Sandbox Code Playgroud)
为了避免获得两次的歧义readfile.go,我建议您使用命名标志。这也将解决问题。
例子:
package main
import (
"flag"
"fmt"
)
func main() {
cmd := flag.String("cmd", "", "")
flag.Parse()
fmt.Printf("my cmd: \"%v\"\n", string(*cmd))
}
Run Code Online (Sandbox Code Playgroud)
不要忘记使用flag.Parse()来检索命令行参数
您可以通过这种方式将参数传递给go run命令:go run .\main.go -cmd main.go您将得到输出:
my cmd: "main.go"
Run Code Online (Sandbox Code Playgroud)
我希望这可以帮助其他人。
| 归档时间: |
|
| 查看次数: |
5485 次 |
| 最近记录: |