首頁  >  文章  >  後端開發  >  如何在 Go 中使用 fmt.Scanln 解析空格分隔的字串?

如何在 Go 中使用 fmt.Scanln 解析空格分隔的字串?

Linda Hamilton
Linda Hamilton原創
2024-11-04 01:58:01512瀏覽

How to Parse Space-Separated Strings with fmt.Scanln in Go?

如何使用fmt.scanln 解析空格分隔的字串

fmt.scanln 是一個用於從標準輸入讀取輸入並掃描的函數將其轉換為結構化變數。然而,當讀取以空格分隔的字串時,可能會遇到一些意想不到的行為。

預設情況下,fmt.scanln 在第一個換行符處停止掃描。這可能會導致使用者輸入包含多個空格分隔的單字的字串,但僅捕獲第一個單字的情況。

例如,考慮以下程式碼:

<code class="go">package main

import "fmt"

func main() {
    var s string
    fmt.Scanln(&s)
    fmt.Println(s)
    return
}</code>

當使用者輸入“31 of Month”,只有“31”被捕獲到 s 變數中。出現這種情況是因為 fmt.scanln 在遇到空格字元(空白字元)後停止掃描。

要解決此問題並捕獲多個空格分隔的單詞,您可以執行以下任一操作:

  1. 使用多個fmt.Scanln 語句:

    • 此方法涉及多次呼叫fmt.Scanln 來單獨捕獲每個單字。
    <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>
  2. 使用緩衝掃描器:

    • 此替代方案使用緩衝掃描器讀取整行輸入,然後解析空格分隔的單字。
    <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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn