首页 > 解决方案 > 将特定变量添加到 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")
}

标签: govariablesswitch-statement

解决方案


如果这只是命令行程序,您应该使用命令行参数,并且传递的任何值(一个/一对主机/IP/平台)在函数中使用它。你可以使用 golang flag

如果你想坚持原来的程序,这就是你需要做的。

func FindHost() {
    fmt.Println("Select from the options below:")
    var choice int
    var param string
    params := url.Values{}
    fmt.Println("1. Platform")
    fmt.Println("2. Hostname")
    fmt.Println("3. IP")
    fmt.Scanf("%d", &choice)
    switch choice {
    case 1:
        fmt.Println("Enter Platform name: ex Windows")
        fmt.Scanf("%s", &param)
        params.Add("filter", fmt.Sprintf("hostname: '%s'", param))

    case 2:
        fmt.Println("Enter hostname: ")
        fmt.Scanf("%s", &param)
        params.Add("filter", fmt.Sprintf("platform_name: '%s'", param))

    case 3:
        fmt.Println("Enter IP")
        fmt.Scanf("%s", &param)
        params.Add("filter", fmt.Sprintf("IP: %s", param))

    }
    fmt.Println(fmt.Sprintf("%+v", params))
}

更新

根据最近的评论更新程序。


推荐阅读