首頁  >  文章  >  後端開發  >  嘗試從 httptest 啟動未啟動的伺服器時出現 nil 指標錯誤

嘗試從 httptest 啟動未啟動的伺服器時出現 nil 指標錯誤

WBOY
WBOY轉載
2024-02-12 19:33:21560瀏覽

尝试从 httptest 启动未启动的服务器时出现 nil 指针错误

php小編草莓將為大家解答一個常見問題:「嘗試從httptest啟動未啟動的伺服器時出現nil指標錯誤」。在進行HTTP測試時,有時我們可能會遇到這個錯誤。這是因為httptest試圖連接到一個尚未啟動的伺服器,導致出現了nil指標錯誤。在解決這個問題之前,我們需要先了解一些背景知識。

問題內容

我正在嘗試在我的程式碼中建立一個模擬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 此時不為零。我想知道為什麼會出現此錯誤以及應該如何解決此問題?

解決方法

  • 呼叫net.listen 函數時需要更新第一個參數(行:l, := net.listen("http", "localhost:49219")

  • 必須是tcptcp4tcp6unixunixpacket,而不是http

  • 對於ipv4,您可以使用tcp4

範例:

65bd95abbd7c

以上是嘗試從 httptest 啟動未啟動的伺服器時出現 nil 指標錯誤的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除