我開始使用 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 關注
- 161 瀏覽
添加回答
舉報
0/150
提交
取消