將參數傳遞給Gorilla Mux 處理程序
在Gorilla Mux 的上下文中,不可能使用HandleFunc 方法直接將參數傳遞給處理程式.但是,有多種方法可以實現類似的結果。
提供的答案中提到的一個選項是建立一個包裝函數。這涉及建立一個函數,該函數接受您想要傳遞給處理程序的附加參數,然後使用這些參數呼叫實際的處理程序。例如:
db := createDB() router.HandleFunc("/users/{id}", func(w http.ResponseWriter, r *http.Request) { showUserHandler(w, r, db) }).Method("GET")
這種方法允許您將資料庫物件作為第三個參數傳遞給 showUserHandler 函數。
另一個選擇是使用結構體來封裝處理程序和附加參數。這允許您定義對相同資料進行操作的多個處理程序,而無需重複用於初始化資料的程式碼。例如:
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中文網其他相關文章!