首頁  >  文章  >  後端開發  >  如何將參數傳遞給 Gorilla Mux 處理程序?

如何將參數傳遞給 Gorilla Mux 處理程序?

Susan Sarandon
Susan Sarandon原創
2024-11-23 20:00:18748瀏覽

How can I pass arguments to Gorilla Mux handlers?

將參數傳遞給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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn