猿问

将特定变量添加到 api 请求的 switch 语句

我正在尝试使用 switch 语句,其中将要求用户输入,并且他们的选择将被扫描到可以在 switch 语句中找到的特定变量中。一旦选择保存到变量 (p, h, i) 中,该变量将作为参数添加,如 params.Add("filter", fmt.Sprintf("hostname:%s", h)) 中所示。一旦将其中一个变量添加到 Add 方法,它们将通过 api 请求传递。我的思维过程离我很远吗?


func FindHost() (*HostSearch, error) {

    fmt.Println("Select from the options below:")

    var choice int

    fmt.Println("1. Platform")

    fmt.Println("2. Hostname")

    fmt.Println("3. IP")

    fmt.Scanln(&choice)

    switch choice {

    case 1:

        var p string

        fmt.Println("Enter Platform name: ex Windows")

        fmt.Scanln(p)


    case 2:

        var h string

        fmt.Println("Enter hostname: ")

        fmt.Scanln(h)


    case 3:

        var i string

        fmt.Println("Enter IP")

        fmt.Scanln(i)


    }

    

    params := url.Values{}

    params.Add("filter", fmt.Sprintf("hostname: '%s'", h))

    params.Add("filter", fmt.Sprintf("platform_name: '%s'", p))

    params.Add("filter", fmt.Sprintf("IP: %s", i))


    req, err := http.NewRequest("GET", <URL>+<api endpoint>+params.Encode(), nil)

    req.Header.Set("Accept", "application/json")

}


富国沪深
浏览 84回答 1
1回答

梵蒂冈之花

如果这只是命令行程序,您应该使用命令行参数,并且传递的任何值(一个/一对主机/IP/平台)在函数中使用它。你可以使用 golang flag。如果你想坚持原来的程序,这就是你需要做的。func FindHost() {&nbsp; &nbsp; fmt.Println("Select from the options below:")&nbsp; &nbsp; var choice int&nbsp; &nbsp; var param string&nbsp; &nbsp; params := url.Values{}&nbsp; &nbsp; fmt.Println("1. Platform")&nbsp; &nbsp; fmt.Println("2. Hostname")&nbsp; &nbsp; fmt.Println("3. IP")&nbsp; &nbsp; fmt.Scanf("%d", &choice)&nbsp; &nbsp; switch choice {&nbsp; &nbsp; case 1:&nbsp; &nbsp; &nbsp; &nbsp; fmt.Println("Enter Platform name: ex Windows")&nbsp; &nbsp; &nbsp; &nbsp; fmt.Scanf("%s", &param)&nbsp; &nbsp; &nbsp; &nbsp; params.Add("filter", fmt.Sprintf("hostname: '%s'", param))&nbsp; &nbsp; case 2:&nbsp; &nbsp; &nbsp; &nbsp; fmt.Println("Enter hostname: ")&nbsp; &nbsp; &nbsp; &nbsp; fmt.Scanf("%s", &param)&nbsp; &nbsp; &nbsp; &nbsp; params.Add("filter", fmt.Sprintf("platform_name: '%s'", param))&nbsp; &nbsp; case 3:&nbsp; &nbsp; &nbsp; &nbsp; fmt.Println("Enter IP")&nbsp; &nbsp; &nbsp; &nbsp; fmt.Scanf("%s", &param)&nbsp; &nbsp; &nbsp; &nbsp; params.Add("filter", fmt.Sprintf("IP: %s", param))&nbsp; &nbsp; }&nbsp; &nbsp; fmt.Println(fmt.Sprintf("%+v", params))}更新根据最近的评论更新程序。
随时随地看视频慕课网APP

相关分类

Go
我要回答