Rumah > pembangunan bahagian belakang > Golang > Apakah yang dimaksudkan dengan pembolehubah yang hanya sah dalam pengendali

Apakah yang dimaksudkan dengan pembolehubah yang hanya sah dalam pengendali

王林
Lepaskan: 2024-02-05 21:15:13
ke hadapan
822 orang telah melayarinya

Apakah yang dimaksudkan dengan pembolehubah yang hanya sah dalam pengendali

Kandungan soalan

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

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

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

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!")
}
Salin selepas log masuk

Jika nilai id ialah 911, adakah bermakna permintaan orang lain juga akan mendapat 911?

Apa maksudnya

will change below your feet
Salin selepas log masuk

Siapa yang boleh menerangkannya secara terperinci untuk memudahkan pemahaman pemula seperti saya? Terima kasih...


Jawapan betul


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!

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