for init 语句只进入函数一次

我开始使用 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 语句来执行此操作并避免在我的代码中添加更多行。非常感谢


守候你守候我
浏览 131回答 1
1回答

30秒到达战场

您需要将 post 语句添加到将在每次迭代中调用的循环中。var query stringfor query = ReadQuery(); query != "exit\n"; query = ReadQuery() {    // loop body}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go