Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Membaca Rentetan Dipisahkan Ruang dengan fmt.Scanln dalam 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!