If statement 如何在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

我是编程新手,golang是我的第一语言,在如何从命令行访问变量方面我遇到了一些问题。我试图获取用户在命令行中输入的标志,并在if语句中使用这些变量。我希望for循环遍历用户输入的所有参数,然后比较if语句中的每个参数,看看是否有与特定标志匹配的参数。所有println语句都用于测试目的。如何正确地编写for循环/if语句

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);
    }
}