Go 当范围超过JSON数组时,无法迭代所有索引

Go 当范围超过JSON数组时,无法迭代所有索引,go,Go,我正在创建一个独立的mockserver,其中JSON文件作为集成测试的输入(请求和响应)。我只能满足第一个要求 // MockServices ... type MockServices struct { Request string `json:"request"` Response string `json:"response"` } func main() { r := getMockServices() for i, s := range r { for

我正在创建一个独立的mockserver,其中JSON文件作为集成测试的输入(请求和响应)。我只能满足第一个要求

// MockServices ...
type MockServices struct {
    Request  string `json:"request"`
    Response string `json:"response"`
}

func main() {
r := getMockServices()

for i, s := range r {
    for i >= 0 {
        // fmt.Println(i)
        // fmt.Println(s.Request)
        http.HandleFunc(s.Request, func(w http.ResponseWriter, r *http.Request) {
            // not serving remaing endpoints
            w.Write([]byte(s.Response))
        })

        if err := http.ListenAndServe(":8080", nil); err != nil {
            panic(err)
        }
    }
}}

非常感谢您的帮助


提前感谢

有很多问题:

  • 始终返回非零错误
  • 您正在尝试绑定到循环中的同一端口
  • 您正试图根据模拟响应的索引绑定到另一个循环中

能否请您使用可运行的go play更新?和/或您看到的异常和正在使用的测试用例?嗯…这到底在做什么?假设
getMockServices()
返回一个切片,您在该切片上进行迭代,然后立即启动第二个循环,该循环在
i>=0
时继续,而从不递减
i
(无论如何都不应该递减,因为它是循环索引变量!)。您也没有在goroutine中运行ListenAndServe,它在服务器遇到错误之前不会返回,因此,它会无限期地阻塞第一个ListenAndServe。正确,我正在返回slice
([]main.MockServices)(len=3 cap=4){(main.MockServices){(Request:(string)(len=2)“/4”,Response:(string)(len=1)“6”},(main.MockServices){Request:(string)(len=2)“/5”,Response:(string)(len=1)“7”},(main.MockServices){Request:(string)(len=1)“/”,Response:(string)(len=1)“5”}
我是Go新手。
ListenAndServe
Gogogoroutine没有为我的func main()构建二进制文件。{h:=http.newservemumx()r:=getMockServices()对于{u,s:=范围r{h.HandleFunc(s.Request,func(w http.ResponseWriter,r*http.Request){w.Write([]字节(s.Response))}}go func(){err:=http.ListenAndServe(:8080),h)log.Fatal(err)}此外,ListendServe在服务器遇到错误之前不会返回。当服务器正常运行时,它将无限期地阻塞。感谢指出非零错误,我将修复它。我正在尝试在循环中绑定到同一端口。我尝试了无索引迭代,但无法实现