If statement 如何在if语句中使用命令行中的参数?
我是编程新手,golang是我的第一语言,在如何从命令行访问变量方面我遇到了一些问题。我试图获取用户在命令行中输入的标志,并在if语句中使用这些变量。我希望for循环遍历用户输入的所有参数,然后比较if语句中的每个参数,看看是否有与特定标志匹配的参数。所有println语句都用于测试目的。如何正确地编写for循环/if语句If statement 如何在if语句中使用命令行中的参数?,if-statement,for-loop,command-line,go,If Statement,For Loop,Command Line,Go,我是编程新手,golang是我的第一语言,在如何从命令行访问变量方面我遇到了一些问题。我试图获取用户在命令行中输入的标志,并在if语句中使用这些变量。我希望for循环遍历用户输入的所有参数,然后比较if语句中的每个参数,看看是否有与特定标志匹配的参数。所有println语句都用于测试目的。如何正确地编写for循环/if语句 var Args []string for i := range os.Args { fmt.Println("array item", i, "is", os.A
var Args []string
for i := range os.Args {
fmt.Println("array item", i, "is", os.Args[i])
if i := os.Args("-target") {
fmt.Println("GREAT SUCCESS")
targetHostNew := targetHost
}
}
fmt.Println("-------------------------", targetHostNew)
我也应该澄清一下。程序需要能够读取标志参数输入,但不能更改这些参数变量您可以使用
标志
包
调用
flag.Parse()
后,需要通过os.Args
访问变量,或者使用flag
包将它们分配给变量
请在以下两个方面查看此示例:
package main
import (
"fmt"
"os"
"flag"
)
func main() {
// declare variable
var targetHost string
// tell flags to put cmd line (string) arg into variable
flag.StringVar(&targetHost, "target", "defaultValue", "")
// do the actual parsing of command line variables
flag.Parse()
// loop over all arguments by index and value
for i, arg := range os.Args {
// print index and value
fmt.Println("item", i, "is", arg)
}
// is targetHost defaultValue - then it wasn't set on the command line
if targetHost == "defaultValue" {
fmt.Println("target not set")
} else {
fmt.Println("target set to", targetHost);
}
}
将循环重写为-这是否说明了如何继续?(数组索引被
\uuu
丢弃,并且要使用的参数值绑定到arg
;os.Args
在该更改后不应在循环中使用。)关于标志
/Args
的答案是正确的,@user2864740关于如何使用for…:=范围{
对数组进行迭代。对于所有变体,请使用范围表达式/1st value/2nd value头查看中的表。
package main
import (
"fmt"
"os"
"flag"
)
func main() {
// declare variable
var targetHost string
// tell flags to put cmd line (string) arg into variable
flag.StringVar(&targetHost, "target", "defaultValue", "")
// do the actual parsing of command line variables
flag.Parse()
// loop over all arguments by index and value
for i, arg := range os.Args {
// print index and value
fmt.Println("item", i, "is", arg)
}
// is targetHost defaultValue - then it wasn't set on the command line
if targetHost == "defaultValue" {
fmt.Println("target not set")
} else {
fmt.Println("target set to", targetHost);
}
}