当您要使用输入切片进行行扫描时,请使用可变的3点表示法
...将切片转换为单独的参数,如下所示:
err := rows.Scan(receiver...)
使用可变参数的您的列(在本例中为三列)将有效地扩展为:
// len(receiver) == 3err := rows.Scan(receiver[0], receiver[1], receiver[2])
编辑 :
SQL Scan方法的参数值必须为类型
interface{}。因此,我们需要一个中间片。例如:is := make([]interface{}, len(receiver))for i := range is { is[i] = receiver[i] // each is[i] will be of type interface{} - compatible with Scan() // using the underlying concrete `*string` values from `receiver`}// ...err := rows.Scan(is...)// `receiver` will contain the actual `*string` typed items


