在golang中是否存在伪指针类型作为函数参数

时间:2017-12-23 23:56:58

标签: go

是否存在类似占位符的虚拟指针类型,如果列数与golang中的rows.Scan()中的args数不匹配,则不允许为rows.Scan()创建额外的变量。

rows, err := db.Query(`SELECT 1, 2, 3`)
for rows.Next() {
    var c1 int
    var c2 int
    // panic (number of arguments mismatch)
    err = rows.Scan(&c1, &c2)
    // syntax error
    err = rows.Scan(&c1, &c2, _)
    // Scan error on column index 2: destination not a pointer
    err = rows.Scan(&c1, &c2, nil)
}

1 个答案:

答案 0 :(得分:0)

不,没有。

您必须将指针传递给值。当然,您可以在Scan:

填充之后忽略该值
dummy := new(T) // creates a pointer to a zero-value object of type T
err := rows.Scan(dummy)