Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Meluluskan Hujah Tambahan kepada Fungsi Pengendali dalam Gorilla Mux?
Dalam Gorilla Mux, secara lalai, pengendali hanya menerima http.ResponseWriter dan *http.Request. Walau bagaimanapun, terdapat senario di mana menghantar argumen tambahan kepada pengendali adalah perlu, seperti objek sambungan pangkalan data.
Satu cara untuk mencapainya ialah untuk menentukan jenis tersuai yang menyimpan data tambahan dan melaksanakan http.HandlerFunc antara muka.
type UserHandler struct { db *gorm.DB } func (h UserHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { // here you can use db } // usage: db := createDB() users := UserHandler{db: db} router.HandleFunc("/users/{id}", users.ServeHTTP)
Pilihan lain ialah menggunakan fungsi penutupan untuk membalut pengendali sebenar dan menyuntik hujah tambahan.
func showUserHandler(db *gorm.DB) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { // here you can use db } } // usage: db := createDB() router.HandleFunc("/users/{id}", showUserHandler(db))
Dalam senario tertentu, menggunakan pembolehubah global mungkin boleh diterima, terutamanya untuk sumber yang dikongsi seperti sambungan pangkalan data. Walau bagaimanapun, adalah penting untuk menggunakannya dengan berhati-hati dan memahami potensi kelemahan.
var db *gorm.DB = createDB() func showUserHandler(w http.ResponseWriter, r *http.Request) { // here you can use db } // usage: router.HandleFunc("/users/{id}", showUserHandler)
Atas ialah kandungan terperinci Bagaimana untuk Meluluskan Hujah Tambahan kepada Fungsi Pengendali dalam Gorilla Mux?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!