Passer des arguments aux gestionnaires Gorilla Mux
Dans le contexte de Gorilla Mux, il n'est pas directement possible de transmettre des arguments aux gestionnaires à l'aide de la méthode HandleFunc . Cependant, il existe plusieurs approches pour obtenir un résultat similaire.
Une option, mentionnée dans la réponse fournie, consiste à créer une fonction wrapper. Cela implique de créer une fonction qui prend les arguments supplémentaires que vous souhaitez transmettre au gestionnaire, puis appelle le gestionnaire réel avec ces arguments. Par exemple :
db := createDB() router.HandleFunc("/users/{id}", func(w http.ResponseWriter, r *http.Request) { showUserHandler(w, r, db) }).Method("GET")
Cette approche vous permet de transmettre l'objet de base de données à la fonction showUserHandler comme troisième argument.
Une autre option consiste à utiliser une structure pour encapsuler à la fois le gestionnaire et le arguments supplémentaires. Cela vous permet de définir plusieurs gestionnaires qui opèrent sur les mêmes données sans avoir à répéter le code d'initialisation des données. Par exemple :
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")
En définissant un gestionnaire sur une structure, vous pouvez attacher un état supplémentaire au gestionnaire sans modifier la fonction du gestionnaire sous-jacent.
Bien qu'il soit acceptable d'utiliser des variables globales dans certains Dans certains cas, ces solutions de contournement proposent des solutions alternatives si vous préférez les éviter.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!