Rumah >pembangunan bahagian belakang >Golang >Apakah yang dimaksudkan dengan pembolehubah yang hanya sah dalam pengendali
Dalam dokumentasi go-optik mereka berkata:
as a rule of thumb, you must only use context values within the handler, and you must not keep any references
Adakah ok jika saya lulus konteks sebagai hujah fungsi seperti ini:
func getlist(c *fiber.ctx) error { result, err := user.search(c) } func search(c *fiber.ctx) (user, err) { id := c.params("id") }
Adakah ini dianggap sebagai amalan yang tidak baik?
Saya kurang faham ayat ini:
as soon as you return from the handler, any values you have obtained from the context will be re-used in future requests and will change below your feet.
Jadi, jika saya telah menghantar respons kepada pelanggan, adakah nilai params akan digunakan semula? Digunakan semula oleh siapa? Oleh saya atau atas permintaan orang lain?
func getlist(c *fiber.ctx) error { id := c.params("id") // 911 return c.sendstring("hello, world!") }
Jika nilai id ialah 911, adakah bermakna permintaan orang lain juga akan mendapat 911?
Apa maksudnya
will change below your feet
Siapa yang boleh menerangkannya secara terperinci untuk memudahkan pemahaman pemula seperti saya? Terima kasih...
Objek konteks sebenar boleh digunakan semula oleh rangka kerja selepas memanggil pengendali anda, jadi anda tidak boleh bergantung pada keadaannya selepas kembali daripada pengendali.
Adakah ok jika saya lulus konteks sebagai parameter fungsi seperti ini?
Ini tidak mengapa, selagi Search
konteks tidak disimpan di tempat lain. Jika ia hanya menggunakan nilai dalam konteks untuk melakukan carian dan mengembalikan hasilnya, tidak mengapa.
Jadi, jika saya telah menghantar respons kepada pelanggan, adakah nilai params akan digunakan semula? Digunakan semula oleh siapa? Oleh saya atau atas permintaan orang lain?
Rangka kerja akan menggunakan semula objek konteks sebenar semasa mengendalikan permintaan kemudian.
Apakah maksud "perubahan akan berlaku di bawah kaki anda"?
Jika anda tidak mengikut nasihat di atas dan sebaliknya menyimpan rujukan kepada konteks selepas kembali daripada pengendali, nilai dalam konteks itu akan berubah secara tidak dijangka kerana rangka kerja menggunakan konteks tersebut untuk permintaan baharu.
Atas ialah kandungan terperinci Apakah yang dimaksudkan dengan pembolehubah yang hanya sah dalam pengendali. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!