Rumah > pembangunan bahagian belakang > Golang > Mengapakah `*http.Request` sebagai Penunjuk tetapi `http.ResponseWriter` Tiada dalam Pengendali HTTP Go?

Mengapakah `*http.Request` sebagai Penunjuk tetapi `http.ResponseWriter` Tiada dalam Pengendali HTTP Go?

Barbara Streisand
Lepaskan: 2024-12-24 13:59:10
asal
176 orang telah melayarinya

Why is `*http.Request` a Pointer but `http.ResponseWriter` is Not in Go HTTP Handlers?

Petunjuk dalam Pengendali HTTP

Dalam Go, tandatangan fungsi pengendali HTTP biasanya menyerupai ini:

func handle(w http.ResponseWriter, r *http.Request) {}
Salin selepas log masuk

Tandatangan ini menimbulkan soalan untuk pendatang baru kepada penunjuk: mengapa objek Permintaan penunjuk, manakala ResponseWriter bukan?

Untuk memahami perkara ini, adalah penting untuk menyelidiki secara khusus kedua-dua jenis.

ResponeWriter mewakili objek respons HTTP. Walau bagaimanapun, di bawah permukaan, ia sebenarnya penunjuk kepada jenis yang tidak dieksport dipanggil http.response, yang merangkumi dalaman pengendalian tindak balas HTTP. Memandangkan ResponseWriter ialah antara muka, pelaksanaan asas ini tidak didedahkan.

Sebaliknya, objek Permintaan ialah penunjuk kepada struktur konkrit (Permintaan), yang mengandungi medan yang mewakili pelbagai aspek permintaan HTTP, seperti pengepala , kandungan dan maklumat URL. Tidak seperti ResponseWriter, yang menguruskan respons pelayan, objek Permintaan digunakan terutamanya untuk mengakses data permintaan pelanggan. Melepasinya sebagai penunjuk membolehkan pengendali mengubah suai parameter permintaan secara langsung, jika perlu.

Atas ialah kandungan terperinci Mengapakah `*http.Request` sebagai Penunjuk tetapi `http.ResponseWriter` Tiada dalam Pengendali HTTP Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan