【发布时间】: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