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
}
这就是您无法读取数据的原因
我刚开始学习 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
}
这就是您无法读取数据的原因