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:
Gunakan berbilang fmt.Scanln pernyataan:
<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>
Gunakan pengimbas penimbal:
<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!