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

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

Barbara Streisand
Barbara Streisandasal
2024-11-03 13:15:03370semak imbas

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

Menggunakan fmt.Scanln untuk Membaca Rentetan yang Dipisahkan Angkasa

Semasa menggunakan fmt.Scanln(), adalah perkara biasa untuk menemui keadaan yang dikehendaki teks dipotong. Pertimbangkan contoh berikut:

<code class="go">package main

import "fmt"

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

Dengan input "30 bulan", output yang dijangkakan ialah "30 bulan", tetapi sebaliknya, hasilnya dipotong kepada "30." Ini kerana Scanln menjangkakan aksara baris baharu untuk menamatkan input.

Penyelesaian:

Untuk membaca token yang diasingkan ruang, gunakan keluarga Scan fmt:

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

Pendekatan ini secara eksplisit menentukan berbilang pembolehubah untuk input, memastikan setiap token dibaca dengan betul.

Penyelesaian Alternatif: bufio.Scan

Sebagai alternatif, pertimbangkan untuk menggunakan pengimbas bufio:

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

Kaedah ini membaca input baris demi baris, memberikan lebih fleksibiliti dan kawalan ke atas proses input.

Atas ialah kandungan terperinci Bagaimana untuk Membaca 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