我是新手,我只想列印使用者輸入的字串 n 次,但它只是列印空格 n 次。這是我的程式碼
package main import ( "fmt" ) func main() { var n int var s string fmt.Scanf("%d", &n) fmt.Scanf("%s", &s) for i := 0; i < n; i++ { fmt.Printf("%s\n", s) } }
有辦法解決這個問題嗎?謝謝。
正確答案
檢視scanf
文件
與您的問題最相關的兩點是:
- 空格分隔值
- 輸入中的換行符號必須與格式中的換行符號相符
因此,如果您按原樣運行應用程序,然後輸入 20 foo
並按 Enter 鍵,您將獲得預期的輸出(foo
列印 20 次)。但是,如果您輸入 20
然後按 Enter 鍵,您將獲得 20 個空白行;看看為什麼讓我們運行:
var n int var s string fmt.Scanf("%d", &n) _, err := fmt.Scanf("%s", &s) if err != nil { panic(err) }
這會因 panic: Unexpected newline
而出現恐慌,因為根據規範,「輸入中的換行符號必須與格式中的換行符相符」。假設您希望在每次輸入後按 Enter 鍵,則可以使用 fmt.Scanf("%d\n", &n)
。但是,正如您在評論中提到的,如果您使用fmt.Scanf("%s\n", &s)
並輸入包含空格的字串,那麼您只會得到第一個(因為scanf
使用空格作為分隔符號)。
如果您想從 stdin
取得整行,那麼這個問題的答案提供了一些選項,例如
func main() { var n int var s string fmt.Println("How many times? ") fmt.Scanf("%d\n", &n) fmt.Println("What to output? ") reader := bufio.NewReader(os.Stdin) s, _ = reader.ReadString('\n') for i := 0; i < n; i++ { fmt.Printf("%s", s) } }
以上是在 go 中列印使用者輸入的字串 n 次的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本文討論了GO中的數組和切片之間的差異,重點是尺寸,內存分配,功能傳遞和用法方案。陣列是固定尺寸的,分配的堆棧,而切片是動態的,通常是堆積的,並且更靈活。

本文說明瞭如何在GO中創建和初始化數組,討論數組和切片之間的差異,並解決了數組的最大尺寸限制。數組與切片:固定與動態,值與參考類型。

文章討論了GO中結構的語法和初始化,包括字段命名規則和結構嵌入。主要問題:如何有效地在GO編程中使用結構。 (字符:159)

本文討論了在軟件開發中使用GO(Golang)的好處,重點介紹其並發支持,快速彙編,簡單性和可擴展性優勢。受益的主要行業包括技術,金融和遊戲。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

記事本++7.3.1
好用且免費的程式碼編輯器

禪工作室 13.0.1
強大的PHP整合開發環境

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Atom編輯器mac版下載
最受歡迎的的開源編輯器