Bagaimana untuk Menghuraikan Rentetan Dipisahkan Ruang dengan fmt.Scanln dalam Go?

Linda Hamilton
Lepaskan: 2024-11-04 01:58:01
asal
511 orang telah melayarinya

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

Cara Menghuraikan Rentetan Terpisah Ruang dengan fmt.scanln

fmt.scanln ialah fungsi yang digunakan untuk membaca input daripada input dan imbasan standard ia menjadi pembolehubah berstruktur. Walau bagaimanapun, apabila membaca rentetan yang dipisahkan oleh ruang, ia mungkin menghadapi beberapa gelagat yang tidak dijangka.

Secara lalai, fmt.scanln berhenti mengimbas pada aksara baris baharu yang pertama. Ini boleh membawa kepada situasi di mana pengguna memasukkan rentetan yang mengandungi berbilang perkataan yang dipisahkan ruang, tetapi hanya perkataan pertama ditangkap.

Sebagai contoh, pertimbangkan kod berikut:

<code class="go">package main

import "fmt"

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

Apabila pengguna memasukkan "31 bulan", hanya "31" ditangkap ke dalam pembolehubah s. Ini berlaku kerana fmt.scanln berhenti mengimbas selepas menemui aksara ruang, iaitu aksara ruang putih.

Untuk menyelesaikan isu ini dan menangkap berbilang perkataan yang dipisahkan ruang, anda boleh melakukan salah satu daripada yang berikut:

  1. Gunakan berbilang fmt.Scanln pernyataan:

    • Kaedah ini melibatkan panggilan fmt.Scanln beberapa kali untuk menangkap setiap perkataan secara individu.
    <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>
    Salin selepas log masuk
  2. Gunakan pengimbas penimbal:

    • Alternatif ini menggunakan penimbal pengimbas untuk membaca keseluruhan baris input dan kemudian menghuraikan perkataan yang dipisahkan ruang.
    <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>
    Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Menghuraikan Rentetan Dipisahkan Ruang dengan fmt.Scanln dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!