1 回答

TA貢獻1799條經(jīng)驗 獲得超8個贊
該表達式controllers.HostController.GetAllHosts是一個方法表達式。方法表達式的結(jié)果是function,除了method's 參數(shù)之外,還采用接收者類型的實例作為其第一個參數(shù)。
因此出現(xiàn)“調(diào)用中沒有足夠的參數(shù)......”錯誤。
為了顯示:
f := controllers.HostController.GetAllHosts
fmt.Println(reflect.TypeOf(f))
// output: func(controllers.HostController, *sql.DB)
因此,要使代碼編譯,您需要將一個實例傳遞controllers.HostController給調(diào)用,即
controllers.HostController.GetAllHosts(controllers.HostController{}, db)
如您所見,它并不漂亮。方法表達式有它們的用處,我敢肯定,但我沒有遇到太多。相反,我最常看到的是方法 values的使用。
h := controllers.HostController{}
router.Handle("/host", h.GetAllHosts(db))
- 1 回答
- 0 關(guān)注
- 112 瀏覽
添加回答
舉報