【问题标题】:Argument Processing in golanggolang 中的参数处理
【发布时间】:2016-08-22 07:42:15
【问题描述】:

我将给出以下命令来运行我的 go 程序。

运行 app.go 3001-3005

这应该做的是,在服务器端口 3001 到 3005 上运行我的 go Rest api。

处理这个参数的主函数的这一部分。

func main() { 
ipfile := os.Args[1:]
s := strings.Split(ipfile, "-")
mux := routes.New() 
mux.Put("/:key1/:value1", PutData)
mux.Get("/profile/:key1", GetSingleData) 
mux.Get("/profile", GetData)
http.Handle("/", mix)

在这里我将运行一个 for 循环并将第一个参数替换为 s[i]。

http.ListenAndServe(":3000", nil)
}

我得到以下输出:

cannot use ipfile (type []string) as type string in argument to strings.Split

os.args 返回什么数据类型? 我尝试将其转换为字符串然后拆分。不工作。 请告诉我有什么问题?

【问题讨论】:

  • 另外:http.ListenAndServe 是阻塞的,所以如果你想在不同的端口上有三个并发的监听器,你必须在它自己的 goroutine 中触发每个监听器(例如作为sync.WaitGroup 的一部分)。
  • 你能告诉我在这种情况下如何使用sync.Waitgroup吗?

标签: rest go arguments command-line-arguments


【解决方案1】:

就像错误所说的那样,ipfile[]string[1:] 切片操作将返回一个切片,即使只有 1 个元素。

检查os.Args 有足够的元素后,使用:

ipfile := os.Args[1]
s := strings.Split(ipfile, "-")

【讨论】:

  • 谢谢。我遇到的错误是 ipfile 中的 1 之后有一个额外的 ':' := os.Args[1]
猜你喜欢
  • 2023-03-10
  • 2020-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-15
  • 2017-05-10
  • 2016-03-04
  • 2023-01-27
相关资源
最近更新 更多