Rumah > pembangunan bahagian belakang > Golang > ralat penunjuk tiada apabila cuba memulakan pelayan yang tidak dimulakan dari httptest

ralat penunjuk tiada apabila cuba memulakan pelayan yang tidak dimulakan dari httptest

WBOY
Lepaskan: 2024-02-12 19:33:21
ke hadapan
589 orang telah melayarinya

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

editor php Strawberry akan menjawab soalan biasa untuk semua orang: "Ralat penunjuk tiada berlaku semasa cuba memulakan pelayan yang tidak dimulakan daripada httptest". Semasa melakukan ujian HTTP, kadangkala kami mungkin menghadapi ralat ini. Ini kerana httptest cuba menyambung ke pelayan yang belum dimulakan, mengakibatkan ralat penunjuk nil. Sebelum menyelesaikan masalah ini, kita memerlukan sedikit pengetahuan latar belakang.

Kandungan soalan

Saya cuba membina pelayan https olok-olok dalam kod saya. Saya ingin menyatakan nombor port, jadi saya menggunakan kod berikut:

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()
Salin selepas log masuk

Walau bagaimanapun, pada baris svr.start(), saya mendapat mesej ralat:

panic: runtime error: invalid memory address or nil pointer dereference [recovered]
panic: runtime error: invalid memory address or nil pointer dereference
Salin selepas log masuk

Jelas sekali svr bukan sifar pada masa ini. Saya ingin tahu mengapa ralat ini berlaku dan bagaimana saya harus membetulkannya?

Penyelesaian

  • Panggil net.listen 函数时需要更新第一个参数(行:l, := net.listen("http", "localhost:49219").

  • mestilah tcptcp4tcp6unixunixpacket,而不是 http.

  • untukipv4,您可以使用tcp4.

Contoh:

65bd95abbd7c

Atas ialah kandungan terperinci ralat penunjuk tiada apabila cuba memulakan pelayan yang tidak dimulakan dari httptest. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan