Go语言中能否将可变数量参数作为指针传入rows.Scan?
Go pg包中rows.Scan()动态传参的实现方式
你当前的代码写法有误,rows.Scan(&args...)的处理逻辑不对。正确的实现方式很简单,直接利用Go的可变参数特性传递即可:
正确的函数实现
func dynamicRowScan(rows *pg.Rows, args ...interface{}) error { return rows.Scan(args...) }
关键说明
rows.Scan的方法签名为Scan(dest ...interface{}) error,本身就支持接收可变数量的指针参数。当你定义args ...interface{}时,传入的参数会被自动打包成[]interface{}切片,调用Scan时只需用args...将切片展开为可变参数传递,不需要额外取地址。
使用示例
var id int var username string var email string // 调用动态扫描函数 err := dynamicRowScan(rows, &id, &username, &email) if err != nil { // 处理扫描错误 }
内容的提问来源于stack exchange,提问作者user13291588
相关产品推荐
相关产品推荐

