我正在尝试在 Golang 中实现jquery 数据表服务器端处理。其中一部分需要一个通用方法来从数据库中选择数据。我已经发布了我在下面所做的事情的简化版本。package mainimport ( "gopkg.in/gorp.v1" "database/sql" _ "github.com/go-sql-driver/mysql")type User struct { TenantId int `db:"tenantid"json:"tenantid"` Username string `db:"username"json:"username"` Password string `json:"password"`}func GenericSelect(database string, table string, columns []string, result interface{})interface{} { dbMap := getDBConnection(database); defer dbMap.Db.Close() var err error query := "SELECT " for index,element := range columns { query += element if(index+1 != len(columns)){ query += "," } } query += " FROM " + table + " LIMIT 1,100" _, err = dbMap.Select(&result, query) if err != nil { panic(err.Error()) // Just for example purpose. } return result}func getDBConnection(dbname string) *gorp.DbMap { var connectionUrl string connectionUrl = "root:root@tcp(localhost:3306)/" + dbname db, err := sql.Open("mysql", connectionUrl) if err != nil { panic(err.Error()) // Just for example purpose. } dbmap := &gorp.DbMap{Db: db, Dialect:gorp.MySQLDialect{"InnoDB", "UTF8"}} return dbmap}func main(){ var users []User columns := []string{"tenantid", "username", "password"} result := GenericSelect("portal","accounting",columns, &users) //make result in to a json instead of print print(result)}一旦我运行它,它会抛出以下错误,panic: gorp: Cannot SELECT into this type: *interface {}goroutine 1 [running]:main.GenericSelect(0x6b1c30, 0x6, 0x6bd490, 0xa, 0xc208073f60, 0x3, 0x3, 0x5e8e60, 0xc20801e260, 0x0, ...) /home/anuruddha/Desktop/go-lang/main.go:30 +0x37f根据错误, Select() 不接受接口。在 golang 中是否有可能达到这种程度的通用性?感谢您是否可以指导我完成这项工作?
1 回答
红颜莎娜
TA贡献1842条经验 获得超13个赞
在这种情况下,结果已经是一个指针(users 作为 &users 传递),因此您不需要再次获取它的地址。
替换行:
_, err = dbMap.Select(&result, query)
和
_, err = dbMap.Select(result, query)
- 1 回答
- 0 关注
- 509 浏览
添加回答
举报
0/150
提交
取消
