go - 将特定变量添加到 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")
}
解决方案
如果这只是命令行程序,您应该使用命令行参数,并且传递的任何值(一个/一对主机/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", ¶m)
params.Add("filter", fmt.Sprintf("hostname: '%s'", param))
case 2:
fmt.Println("Enter hostname: ")
fmt.Scanf("%s", ¶m)
params.Add("filter", fmt.Sprintf("platform_name: '%s'", param))
case 3:
fmt.Println("Enter IP")
fmt.Scanf("%s", ¶m)
params.Add("filter", fmt.Sprintf("IP: %s", param))
}
fmt.Println(fmt.Sprintf("%+v", params))
}
更新
根据最近的评论更新程序。
推荐阅读
- c# - 将 Android 应用程序连接到 ASP.NET Web 服务:java.net.MalformedURLException:找不到协议
- c++ - 如何在现代 C++ 中使用生成器初始化 const 容器?
- java - 当用户名重复时以这种方式处理异常以返回消息
- c# - 在诊断完全分析编译后如何运行方法?
- python - 如何使用python编码ÿ?
- haskell - 什么是阴谋集团地狱?
- javascript - React history.push() 不渲染新组件
- scala - 在 scala spark2 到 hbase 中运行 saveAsNewAPIHadoopDataset 时出现空指针异常
- multithreading - Springboot 多线程定时运行
- caching - IBM Bluemix 上的 Google Cloud Memcache 等效项