我正试图在Golang中实现jquery datatables server side processing。其中的一部分需要一个通用的方法来从数据库中选择数据。我已经发布了我在下面完成的简化版本。Golang通用方法从数据库获取数据

package main 
import (
    "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:[email protected](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 

根据该误差,选择()不接受的接口。是否有可能实现golang这个级别一般性?感谢您是否可以指导我实现这个目标?

2016-02-27 Anuruddha