Gorilla Mux ハンドラーに引数を渡す
Gorilla Mux のコンテキストでは、HandleFunc メソッドを使用してハンドラーに引数を直接渡すことはできません。 。ただし、同様の結果を達成するためのアプローチがいくつかあります。
提供された回答で言及されているオプションの 1 つは、ラッパー関数を作成することです。これには、ハンドラーに渡す追加の引数を受け取る関数を作成し、それらの引数を使用して実際のハンドラーを呼び出すことが含まれます。例:
db := createDB() router.HandleFunc("/users/{id}", func(w http.ResponseWriter, r *http.Request) { showUserHandler(w, r, db) }).Method("GET")
この方法では、showUserHandler 関数に 3 番目の引数としてデータベース オブジェクトを渡すことができます。
別のオプションは、構造体を使用してハンドラーと追加の引数。これにより、データを初期化するためのコードを繰り返すことなく、同じデータを操作する複数のハンドラーを定義できます。例:
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")
構造体でハンドラーを定義すると、基礎となるハンドラー関数を変更せずにハンドラーに追加の状態を付加できます。
一部の関数ではグローバル変数を使用できますが、場合によっては、これらの回避策を回避したい場合に、代替ソリューションが提供されます。
以上がGorilla Mux ハンドラーに引数を渡すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。