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

for init 语句只进入函数一次

for init 语句只进入函数一次

Go
守候你守候我 2023-06-12 17:26:29
我开始使用 Go 编程,我正在尝试创建一个程序来查询数据库并返回数据。我已经做到了这一点,但在此期间我遇到了一些问题和疑问。首先,我尝试创建一个带有条件的 for 来告诉程序何时我想停止查询,但是 for 的 Init 语句看起来只被评估一次 - 而且我再也没有被要求通过终端输入输入 - (我在这里读到是因为他的值是 hold 然后它不会再次执行该函数:Golang switch statement only calls function once):已编辑func main() {    var query string    for query = ReadQuery(); query != "exit\n"; {        rows, err := db.Query(query)        //Printing results and other operations    }    fmt.Println("Exiting")}func ReadQuery() string {    reader := bufio.NewReader(os.Stdin)    fmt.Print("Enter query in a single line, with no newline. 'exit' to terminate execution: \n")    query, _ :=reader.ReadString('\n')    reader.Reset(os.Stdin)    return query}...所以我做了这个在我看来有点脏的修复:func main() {    var query string    for {        query = ReadQuery()        if query == "exit\n" {            fmt.Println("Exiting")            break        }        //Printing results and other operations    }}func ReadQuery() string {   reader := bufio.NewReader(os.Stdin)   fmt.Print("Enter query in a single line, with no newline. 'exit' to terminate execution: \n")   query, _ :=reader.ReadString('\n')   reader.Reset(os.Stdin)   return query}所以问题是是否有另一种方法可以使用 for 语句来执行此操作并避免在我的代码中添加更多行。非常感谢
查看完整描述

1 回答

?
30秒到达战场

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

您需要将 post 语句添加到将在每次迭代中调用的循环中。


var query string

for query = ReadQuery(); query != "exit\n"; query = ReadQuery() {

    // loop body

}


查看完整回答
反对 回复 2023-06-12
  • 1 回答
  • 0 关注
  • 130 浏览
慕课专栏
更多

添加回答

举报

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