我正在嘗試在 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 關注
- 453 瀏覽
添加回答
舉報
0/150
提交
取消