首頁 > 後端開發 > Golang > 主體

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

Linda Hamilton
發布: 2024-11-04 01:58:01
原創
511 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!