如何在 Go 中使用 fmt.Scanln 解析空格分隔的字串?
Nov 04, 2024 am 01:58 AM如何使用fmt.scanln 解析空格分隔的字串
fmt.scanln 是一個用於從標準輸入讀取輸入並掃描的函數將其轉換為結構化變數。然而,當讀取以空格分隔的字串時,可能會遇到一些意想不到的行為。
預設情況下,fmt.scanln 在第一個換行符處停止掃描。這可能會導致使用者輸入包含多個空格分隔的單字的字串,但僅捕獲第一個單字的情況。
例如,考慮以下程式碼:
1 2 3 4 5 6 7 8 9 10 |
|
當使用者輸入“31 of Month”,只有“31”被捕獲到 s 變數中。出現這種情況是因為 fmt.scanln 在遇到空格字元(空白字元)後停止掃描。
要解決此問題並捕獲多個空格分隔的單詞,您可以執行以下任一操作:
-
使用多個fmt.Scanln 語句:
- 此方法涉及多次呼叫fmt.Scanln 來單獨捕獲每個單字。
1
2
3
4
5
6
7
8
9
10
11
12
<code
class
=
"go"
>package main
import
"fmt"
func main() {
var
s1 string
var
s2 string
fmt.Scanln(&s1, &s2)
fmt.Println(s1)
fmt.Println(s2)
return
}</code>
登入後複製 -
使用緩衝掃描器:
- 此替代方案使用緩衝掃描器讀取整行輸入,然後解析空格分隔的單字。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<code
class
=
"go"
>package main
import (
"bufio"
"fmt"
"os"
)
func main() {
scanner := bufio.NewScanner(os.Stdin)
for
scanner.Scan() {
s := scanner.Text()
fmt.Println(s)
}
if
err := scanner.Err(); err != nil {
os.
Exit
(1)
}
}</code>
登入後複製
以上是如何在 Go 中使用 fmt.Scanln 解析空格分隔的字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱門文章

熱門文章

熱門文章標籤

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

SublimeText3漢化版
中文版,非常好用

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

Dreamweaver CS6
視覺化網頁開發工具

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