Rumah >pembangunan bahagian belakang >Golang >Bolehkah Anda Melarikan Diri dari Gelung Input `bufio.Scanner` Tanpa Semakan Bersyarat?

Bolehkah Anda Melarikan Diri dari Gelung Input `bufio.Scanner` Tanpa Semakan Bersyarat?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-14 14:52:02551semak imbas

Can You Escape the Go `bufio.Scanner` Input Loop Without a Conditional Check?

Escape Gelung Input tanpa Semakan Bersyarat

Dalam Go, bufio.Scanner membenarkan anda membaca input daripada konsol baris demi baris. Walau bagaimanapun, fungsi Imbasan standard secara automatik maju ke token seterusnya, berpotensi menghasilkan gelung tak terhingga jika tiada keadaan putus yang jelas.

Dokumentasi menyatakan bahawa Imbasan mengembalikan palsu apabila ia mencapai penghujung input. Adakah ini bermakna anda boleh melangkau semakan bersyarat untuk keluar dari gelung?

Salah Tafsiran Dokumen

Malangnya, anda salah tafsir dokumentasi. Fungsi pisah lalai yang digunakan oleh Pengimbas ialah ScanLines, yang mengembalikan setiap baris teks sebagai token yang berasingan.

Gelagat ScanLines

ScanLines mempunyai dua gelagat utama:

  1. Barisan Kosong Kembali: Ia boleh mengembalikan baris kosong, malah berturut-turut, tanpa menjejaskan aliran gelung.
  2. Barisan Bukan Kosong tanpa Baris Baharu: Baris akhir bukan kosong input akan dikembalikan walaupun ia tidak mempunyai aksara baris baharu.

Memecah Gelung

Oleh itu, baris kosong sahaja tidak menandakan tamat input. Gelung hanya akan pecah apabila anda mencapai keadaan akhir fail (EOF), biasanya dicetuskan oleh tindakan seperti menekan Ctrl-D.

Penyelesaian

Untuk melarikan diri gelung input tanpa klausa if, anda mesti sama ada:

  • Mengendalikan kes baris kosong secara manual dengan menyemak input.Text() == ""
  • Gunakan tersuai fungsi split yang mengembalikan palsu apabila ia menemui baris kosong

Walau bagaimanapun, pada umumnya disyorkan untuk mengekalkan semakan bersyarat untuk kesederhanaan dan untuk mengelakkan kemungkinan kes tepi.

Atas ialah kandungan terperinci Bolehkah Anda Melarikan Diri dari Gelung Input `bufio.Scanner` Tanpa Semakan Bersyarat?. 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