Оператор переключения для добавления переменной c в запрос API - PullRequest
0 голосов
/ 06 августа 2020

Я пытаюсь использовать оператор switch, в котором у пользователя будет запрашиваться ввод, и его выбор будет сканироваться в определенную переменную c, которую можно найти в операторе 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")
}

1 Ответ

0 голосов
/ 06 августа 2020

Если это просто программа командной строки, вы должны использовать аргументы командной строки, и какое бы значение ни было передано (один / пара хоста / 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))
}

ОБНОВЛЕНИЕ

обновить программу согласно последнему комментарию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...