Rumah > Artikel > pembangunan bahagian belakang > Bagaimanakah saya boleh menyampaikan hujah kepada pengendali Gorilla Mux?
Menyampaikan Argumen kepada Pengendali Gorilla Mux
Dalam konteks Gorilla Mux, tidak mungkin untuk menyampaikan hujah kepada pengendali menggunakan kaedah HandleFunc . Walau bagaimanapun, terdapat beberapa pendekatan untuk mencapai hasil yang serupa.
Satu pilihan, yang dinyatakan dalam jawapan yang disediakan, adalah untuk mencipta fungsi pembungkus. Ini melibatkan penciptaan fungsi yang mengambil argumen tambahan yang anda ingin sampaikan kepada pengendali dan kemudian memanggil pengendali sebenar dengan argumen tersebut. Contohnya:
db := createDB() router.HandleFunc("/users/{id}", func(w http.ResponseWriter, r *http.Request) { showUserHandler(w, r, db) }).Method("GET")
Pendekatan ini membolehkan anda menghantar objek pangkalan data ke fungsi showUserHandler sebagai hujah ketiga.
Pilihan lain ialah menggunakan struct untuk merangkum kedua-dua pengendali dan hujah tambahan. Ini membolehkan anda menentukan berbilang pengendali yang beroperasi pada data yang sama tanpa perlu mengulangi kod untuk memulakan data. Contohnya:
type Users struct { db *gorm.DB } func (users *Users) showHandler(w http.ResponseWriter, r *http.Request) { // Access the database object through users.db } // Setup users := &Users{db: createDB()} router.HandleFunc("/users/{id}", users.showHandler).Method("GET")
Dengan mentakrifkan pengendali pada struct, anda boleh melampirkan keadaan tambahan pada pengendali tanpa mengubah suai fungsi pengendali asas.
Walaupun boleh diterima untuk menggunakan pembolehubah global dalam beberapa kes, penyelesaian ini menyediakan penyelesaian alternatif jika anda lebih suka mengelakkannya.
Atas ialah kandungan terperinci Bagaimanakah saya boleh menyampaikan hujah kepada pengendali Gorilla Mux?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!