基本上在执行查询后,我想获取结果行并产生一个[]map[string]interface{},但是我不知道如何使用API进行此操作,因为该Rows.Scan()函数需要特定数量的参数来匹配所请求的列数(可能是类型)以及正确获取数据。
[]map[string]interface{}
Rows.Scan()
再次,我想泛化此调用并进行任何查询,然后将其转换为[]map[string]interface{},其中映射包含映射到该行的值的列名。
这可能效率很低,我计划稍后更改结构,interface{}以使其成为单个数据点的结构。
interface{}
我将如何仅使用数据库/ sql包,或者在必要时使用数据库/ sql / driver包来做到这一点?
看一下使用sqlx,它可以比标准数据库/ sql库更轻松地完成此任务:
places := []Place{} err := db.Select(&places, "SELECT * FROM place ORDER BY telcode ASC") if err != nil { fmt.Printf(err) return }
你可以明显地替代[]Place{}了[]map[string]interface{},但如果可能的话最好,如果你知道你的数据库的结构,使用结构。您不需要像在上那样进行任何类型的断言interface{}。
[]Place{}