return 如何从函数中引用变量

How return ref var from function

我刚开始学习 Go,在从函数返回 ref vars 时遇到问题

我有一个函数可以从数据库中获取行 table:

func getData(query string, db *sql.DB) *sql.Rows {
    rows, err := db.Query(query)
    if err != nil {
        fmt.Println("SQL select error: ")
        log.Fatal(err)
    }
    defer rows.Close()

    return rows
}

现在我尝试从数据库中获取数据

rows := getData("select * from all_obrash", db)
fmt.Println(rows)

我希望它只是 returns *sql.Rows 但我什么也没得到

&{0xc00025e100 0x4cf270 0xc0002743c0 <nil> 0xc000248180 {{0 0} 0 0 0 0} true <nil> []}

当我从 main() 调用时它工作得很好,但是当我将代码移动到 func 时它停止获取行,我想我在这里遗漏了什么。

defer rows.Close() 在函数 returns

时执行
  func getData(query string, db *sql.DB) *sql.Rows {
    rows, err := db.Query(query)
    if err != nil {
        fmt.Println("SQL select error: ")
        log.Fatal(err)
    }
    defer rows.Close()

    return rows
}

这就是您无法读取数据的原因