1 回答

TA貢獻(xiàn)1839條經(jīng)驗(yàn) 獲得超15個(gè)贊
是的,這是可能的,但是您的函數(shù)應(yīng)該返回interface{}
而不是[]*interface
。
func (c Helper) ReturnModels(modelName string) interface{} {}
在這種情況下,您可以使用類型開關(guān)和/或類型斷言將返回值轉(zhuǎn)換為其原始類型。
例子
注意:我從未使用過(guò) Revel,但以下代碼片段應(yīng)該可以讓您大致了解:
package main
import "fmt"
type Post struct {
Author string
Content string
}
type Brand struct {
Name string
}
var database map[string]interface{}
func init() {
database = make(map[string]interface{})
brands := make([]Brand, 2)
brands[0] = Brand{Name: "Gucci"}
brands[1] = Brand{Name: "LV"}
database["brands"] = brands
posts := make([]Post, 1)
posts[0] = Post{Author: "J.K.R", Content: "Whatever"}
database["posts"] = posts
}
func main() {
fmt.Println("List of Brands: ")
if brands, ok := ReturnModels("brands").([]Brand); ok {
fmt.Printf("%v", brands)
}
fmt.Println("\nList of Posts: ")
if posts, ok := ReturnModels("posts").([]Post); ok {
fmt.Printf("%v", posts)
}
}
func ReturnModels(modelName string) interface{} {
return database[modelName]
}
添加回答
舉報(bào)