You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 04:59:51