第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

學(xué)習圍棋:如何使用http.HandlerFunc?

學(xué)習圍棋:如何使用http.HandlerFunc?

Go
青春有我 2023-02-06 19:09:19
努力學(xué)習圍棋我的測試項目我正在構(gòu)建一個簡單的 API 來與輕型 SQL 數(shù)據(jù)庫進行通信。我創(chuàng)建了這個函數(shù),它從數(shù)據(jù)庫表中獲取所有主機。據(jù)我所知,我的函數(shù)應(yīng)該接受一個指向數(shù)據(jù)庫的指針并返回給我 http.HandlerFunc。func (h HostController) GetAllHosts(db *sql.DB) http.HandlerFunc {    return func(w http.ResponseWriter, r *http.Request) {        var host entities.Host        var hosts []entities.Host        var errorMessage entities.Error        rows, err := db.Query("SELECT * FROM hosts WHERE hosts = ?", host)        if err != nil {            errorMessage.Message = "Error: Get all hosts"            utils.SendError(w, http.StatusInternalServerError, errorMessage)            return        }        defer rows.Close()        for rows.Next() {            err := rows.Scan(&host.ID, &host.Uuid, &host.Name, &host.IPAddress)            if err != nil {                errorMessage.Message = "Error: (Get all hosts) Can't scan rows"                utils.SendError(w, http.StatusInternalServerError, errorMessage)                return            }            hosts = append(hosts, host)        }        ////If hosts slice is empty -> no data in database        if len(hosts) == 0 {            errorMessage.Message = "No found hosts in database"            utils.SendError(w, http.StatusInternalServerError, errorMessage)            return        }        //Convert containers content to JSON representation        w.Header().Set("Content-Type", "application/json")        utils.SendSuccess(w, hosts)    }}現(xiàn)在,到這里一切都應(yīng)該很好,但我不知道如何在 main.go 構(gòu)建布局上實現(xiàn)它:.├── controllers│       └── hostcontroller.go│       └── main.go這就是我試圖在 main.go 上實現(xiàn)它的方式package mainimport (    "examProg/config"    "examProg/controllers"    "fmt"    "log"    "net/http"    "github.com/gorilla/mux"    _ "github.com/mattn/go-sqlite3")我不明白如何實現(xiàn) http.HandlerFunc ??
查看完整描述

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))


查看完整回答
反對 回復(fù) 2023-02-06
  • 1 回答
  • 0 關(guān)注
  • 112 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號