如何减少 Golang 中重复函数的冗余代码?

Nig*_*Owl 2 redundancy struct function go

我有一个 Rest API 应用程序来列出浏览器的所有 json 数据。只要我有更多的模块,我的代码就会更加冗余。和复杂。

func UserList(w http.ResponseWriter, r *http.Request) {
    list := []models.User{}
    db.Find(&list)
    json.NewEncoder(w).Encode(list)
}

func ProductList(w http.ResponseWriter, r *http.Request) {
    list := []models.Product{}
    db.Find(&list)
    json.NewEncoder(w).Encode(list)
}

func OrderList(w http.ResponseWriter, r *http.Request) {
    list := []models.Order{}
    db.Find(&list)
    json.NewEncoder(w).Encode(list)
}
Run Code Online (Sandbox Code Playgroud)

有没有更好的解决方案可以将这段代码变成一个函数示例

func List(w http.ResponseWriter, r *http.Request) {
    list := ??? List of struct here ???
    db.Find(&list)
    json.NewEncoder(w).Encode(list)
}
Run Code Online (Sandbox Code Playgroud)

Uma*_*yat 5

你可以这样做:

func List(list interface{}, w http.ResponseWriter, r *http.Request,) {
    db.Find(list)
    json.NewEncoder(w).Encode(list)
}
Run Code Online (Sandbox Code Playgroud)