我开始使用 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
}
- 1 回答
- 0 关注
- 130 浏览
添加回答
举报
0/150
提交
取消