我開(kāi)始使用 Go 編程,我正在嘗試創(chuàng)建一個(gè)程序來(lái)查詢(xún)數(shù)據(jù)庫(kù)并返回?cái)?shù)據(jù)。我已經(jīng)做到了這一點(diǎn),但在此期間我遇到了一些問(wèn)題和疑問(wèn)。首先,我嘗試創(chuàng)建一個(gè)帶有條件的 for 來(lái)告訴程序何時(shí)我想停止查詢(xún),但是 for 的 Init 語(yǔ)句看起來(lái)只被評(píng)估一次 - 而且我再也沒(méi)有被要求通過(guò)終端輸入輸入 - (我在這里讀到是因?yàn)樗闹凳?hold 然后它不會(huì)再次執(zhí)行該函數(shù):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}...所以我做了這個(gè)在我看來(lái)有點(diǎn)臟的修復(fù):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}所以問(wèn)題是是否有另一種方法可以使用 for 語(yǔ)句來(lái)執(zhí)行此操作并避免在我的代碼中添加更多行。非常感謝
1 回答

30秒到達(dá)戰(zhàn)場(chǎng)
TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超6個(gè)贊
您需要將 post 語(yǔ)句添加到將在每次迭代中調(diào)用的循環(huán)中。
var query string
for query = ReadQuery(); query != "exit\n"; query = ReadQuery() {
? ? // loop body
}
- 1 回答
- 0 關(guān)注
- 167 瀏覽
添加回答
舉報(bào)
0/150
提交
取消