Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Meluluskan Hujah Tambahan kepada Pengendali Gorilla Mux?
Menyampaikan Argumen kepada Pengendali Gorilla Mux
Dalam Gorilla Mux, pengendali biasanya didaftarkan menggunakan kaedah HandleFunc, yang mengambil fungsi yang menerima http.ResponseWriter dan *http.Request sebagai argumen.
Batasan Kaedah Standard
Walau bagaimanapun, apabila anda memerlukan argumen tambahan dalam pengendali anda, seperti objek pangkalan data, kaedah HandleFunc lalai mempunyai had. Ia hanya menerima dua hujah, menjadikannya mencabar untuk lulus parameter tambahan.
Penyelesaian Kemungkinan
Terdapat beberapa penyelesaian untuk mengatasi had ini:
Pengendali Berasaskan Struktur:
Buat struct pengendali tersuai dan tentukan kaedah yang mengambil hujah yang diperlukan. Struktur itu kemudiannya boleh dibenamkan dalam fungsi pengendali.
type Users struct { db *gorm.DB } func (users *Users) ShowUserHandler(w http.ResponseWriter, r *http.Request) { // Access to the database object through users.db } // Register the handler router.HandleFunc("/users/{id}", users.ShowUserHandler).Methods("GET")
Fungsi Pembungkus:
Balut pengendali sebenar dalam fungsi pembungkus yang menyediakan tambahan hujah.
db := createDB() router.HandleFunc("/users/{id}", func(w http.ResponseWriter, r *http.Request) { ShowUserHandler(w, r, db) }).Method("GET")
Pilihan pendekatan bergantung pada anda keperluan dan keutamaan permohonan. Jika anda memilih untuk tidak mempunyai objek pangkalan data global atau memerlukan lebih daripada satu tika pangkalan data, kaedah berasaskan struct atau fungsi pembungkus memberikan lebih fleksibiliti.
Atas ialah kandungan terperinci Bagaimana untuk Meluluskan Hujah Tambahan kepada Pengendali Gorilla Mux?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!