为了账号安全,请及时绑定邮箱和手机立即绑定

Golang Go-SQLite3 无法迭代类型错误

Golang Go-SQLite3 无法迭代类型错误

Go
泛舟湖上清波郎朗 2021-11-22 17:44:22
是的,这完全没问题。只要这是与 交互的唯一 goroutine os.Stdin,一切都会正常工作。顺便说一句,您可能想要使用bufio.Scanner-使用它比使用更好一些bufio.Reader:go func() {    consolescanner := bufio.NewScanner(os.Stdin)    // by default, bufio.Scanner scans newline-separated lines    for consolescanner.Scan() {        input := consolescanner.Text()        fmt.Println(input)    }    // check once at the end to see if any errors    // were encountered (the Scan() method will    // return false as soon as an error is encountered)     if err := consolescanner.Err(); err != nil {         fmt.Println(err)         os.Exit(1)    }}()
查看完整描述

1 回答

?
杨魅力

TA贡献1811条经验 获得超6个赞

是的,你失踪了。

您不是在使用database/sql包,而是在使用sqlite3包!


sql.Open()返回一个sql.DBDB.Query()返回一个sql.Rows,并且Rows.Next()是:

func (rs *Rows) Next() bool

但是,您调用sqlite3.Open()which 返回一个sqlite3.Conn,然后调用Conn.Query()which 返回sqlite3.Stmt您命名的rows!所以rows.Next()Stmt.Next()它是:

func (s *Stmt) Next() error

混乱之源

这令人困惑,因为 sqlite3 是符合内置database/sql接口的驱动程序,但它也提供了另一个接口,您可以通过其特定于供应商的 sqlite3 接口使用它。

使用这个database/sql包,你会像这样启动它:

db, err := sql.Open("sqlite3", "./foo.db")


查看完整回答
反对 回复 2021-11-22
  • 1 回答
  • 0 关注
  • 185 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信