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

是的,这完全没问题。只要这是与 交互的唯一 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)

    }

}()


泛舟湖上清波郎朗
浏览 186回答 1
1回答

杨魅力

是的,你失踪了。您不是在使用database/sql包,而是在使用sqlite3包!sql.Open()返回一个sql.DB,DB.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")
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go