Membaca Rentetan Dipisahkan Ruang daripada Rentetan Menggunakan Fmt.Scanln
Fungsi Scanln, sebahagian daripada pakej fmt, membolehkan pembacaan input daripada rentetan. Walau bagaimanapun, isu biasa yang dihadapi semasa menggunakan Scanln ialah memperoleh hanya perkataan pertama apabila mengharapkan berbilang perkataan yang dipisahkan ruang.
Dalam contoh yang disediakan:
<code class="go">package main import "fmt" func main() { var s string fmt.Scanln(&s) fmt.Println(s) return }</code>
Apabila menjalankan kod ini dengan input "31 bulan," ia mengeluarkan "31" dan bukannya "31 bulan" yang dijangkakan. Ini kerana Scanln menganggap input sebagai satu token, mengabaikan ruang.
Untuk menyelesaikan isu ini, anda boleh menggunakan penyelesaian berikut:
1. Imbas Berbilang Pembolehubah Serentak
fmt Scanln menerima berbilang argumen, membolehkan anda membaca berbilang perkataan serentak.
<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>
Kod ini akan mengeluarkan "31" dan "bulan" dengan betul.
2. Gunakan Pengimbas Bufio
Pakej bufio memudahkan proses membaca input daripada pelbagai sumber, termasuk rentetan.
<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>
Dengan kod ini, anda boleh membaca dan mencetak setiap baris secara individu.
Atas ialah kandungan terperinci Bagaimana untuk Membaca Rentetan Dipisahkan Ruang daripada Rentetan Menggunakan Fmt.Scanln?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!