我正在使用 Go 服务器创建 RESTful API 的一个小实现。
我正在从 URL 中提取查询参数(我知道这不安全,我稍后会尝试解决这个问题,但如果您对这个主题有任何建议,它们会有所帮助)。
我将表名、所需的列和一些条件保存在 3 个 sring 变量中。我正在使用这个查询:
rows, _ := db.Query(fmt.Sprintf("SELECT %s FROM %s WHERE %s", columns, table, conditions))
我想将查询结果作为 JSON 发送回我的前端。我有可变数量的未知列,所以我不能用“标准”的方式来做。我能想到的一种解决方案是从查询结果和rows.Columns()“手动”构建一个JSON字符串。
但我想以更复杂的方式使用诸如可变参数接口之类的东西来做到这一点。问题是,即使尝试了很多,我仍然不明白它是如何工作的。
我尝试使用以下代码
cols, err := rows.Columns() // Get the column names; remember to check err
vals := make([]sql.RawBytes, len(cols)) // Allocate enough values
ints := make([]interface{}, len(cols)) // Make a slice of []interface{}
for i := range ints {
vals[i] = &ints[i] // Copy references into the slice
}
for rows.Next() {
err := rows.Scan(vals...)
// Now you can check each element of vals for nil-ness,
// and you can use type introspection and type assertions
// to fetch the column into a typed variable.
}
来自本教程但它不起作用,我收到了类似的错误
cannot use &ints[i] (type *interface {}) as type sql.RawBytes in assignment
即使它有效,我也不明白。
有没有人对此有好的解决方案?一些解释也会很好。
有只小跳蛙
相关分类