是的,这完全没问题。只要这是与 交互的唯一 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.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")
- 1 回答
- 0 关注
- 185 浏览
添加回答
举报
0/150
提交
取消