Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menghuraikan Rentetan Dipisahkan Ruang dengan fmt.Scanln dalam Go?

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

Linda Hamilton
Linda Hamiltonasal
2024-11-04 01:58:01512semak imbas

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>

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>
  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>

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!

Kenyataan:
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