我试图在我的代码中构建一个模拟httpserver。我想指定端口号,所以我使用了下面的代码:
l, _ := net.Listen("http", "localhost:49219")
svr := httptest.NewUnstartedServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { ... }))
svr.Listener.Close()
svr.Listener = l
svr.Start()
然而,在svr.Start()行,我得到一个错误:
panic: runtime error: invalid memory address or nil pointer dereference [recovered]
panic: runtime error: invalid memory address or nil pointer dereference
显然svr在这一点上不是nil。我想知道为什么我会得到这个错误,我应该如何解决这个问题?
1条答案
按热度按时间iecba09b1#
net.Listen
函数时,需要更新第一个参数(行:l, := net.Listen("http", "localhost:49219")
.tcp
、tcp4
、tcp6
、unix
或unixpacket
,而不是http
。IPv4
,可以使用tcp4
。示例: