Rumah >pembangunan bahagian belakang >Golang >Mengapakah `*http.Request` sebagai Penunjuk tetapi `http.ResponseWriter` Tiada dalam Pengendali HTTP Go?
Petunjuk dalam Pengendali HTTP
Dalam Go, tandatangan fungsi pengendali HTTP biasanya menyerupai ini:
func handle(w http.ResponseWriter, r *http.Request) {}
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!