Go 只为init语句输入函数一次
我开始用Go编程,我试图创建一个程序,对数据库进行查询并返回数据。我已经做到了这一点,但在此过程中我遇到了一些问题 首先,我试图创建一个带有条件的for,告诉程序何时我要停止查询,但是for的Init语句看起来只计算了一次——并且我再也没有被要求通过终端输入输入—(我在这里读到了,这是因为他的值为hold,然后它不再执行该函数:): 已编辑Go 只为init语句输入函数一次,go,Go,我开始用Go编程,我试图创建一个程序,对数据库进行查询并返回数据。我已经做到了这一点,但在此过程中我遇到了一些问题 首先,我试图创建一个带有条件的for,告诉程序何时我要停止查询,但是for的Init语句看起来只计算了一次——并且我再也没有被要求通过终端输入输入—(我在这里读到了,这是因为他的值为hold,然后它不再执行该函数:): 已编辑 func main() { var query string for query = ReadQuery(); query != "exit
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语句来实现这一点,并避免代码中出现更多行。非常感谢您需要向循环中添加一条post语句,该语句将在每次迭代中调用
var query string
for query = ReadQuery(); query != "exit\n"; query = ReadQuery() {
// loop body
}
对该功能有很好的解释。您是否考虑过q:=f()的
;q!=“退出”;q=f(){
?你的问题中有太多的代码。如果“只有前三行是重要的”,请仅包括前三行。一般来说,帖子a。您似乎知道for循环的init语句只执行一次,这是您的问题。那么,实际问题是什么?谢谢,mkopriva,我没有考虑到这一点!是的,您是对的,Flimzy,我将清理帖子,使具有sam的任何人都能更清楚地看到它问题。我一直在寻找一个更清晰的实现我想要做的事情,沃尔克。感谢你们所有人的快速响应这几乎就是“init语句”的定义。它初始化循环。如果它运行不止一次,那将是极其误导的。