Apa yang Menyebabkan Ralat \'fmt.Scanln Jangkaan Newline\' dan Bagaimana untuk Menyelesaikannya?

Susan Sarandon
Lepaskan: 2024-10-24 02:07:02
asal
934 orang telah melayarinya

What Causes

fmt.Scanln Expectation

Apabila menggunakan fmt.Scanln in Go, seseorang mungkin menghadapi ralat: "fmt.Scanln expected newline." Memahami ralat ini dan implikasinya adalah penting untuk penyahpepijatan dan menulis kod yang mantap.

Gelagat fmt.Scan vs fmt.Scanln

fmt.Scan membaca nilai yang dipisahkan oleh ruang daripada input standard, menganggap baris baharu sebagai aksara ruang. Ini bermakna ia akan meneruskan penghuraian input sehingga sama ada semua hujah diisi atau ralat berlaku. Sebaliknya, fmt.Scanln juga membaca daripada input standard tetapi menjangkakan aksara baris baharu sebagai titik penamatan. Sebarang input selepas itu tidak akan dihuraikan.

Contoh

Dalam kod Go yang disediakan, isu timbul apabila menggunakan fmt.Scanln untuk membaca rentetan s. Input termasuk aksara baris baharu, yang mencetuskan penamatan input untuk fmt.Scanln. Walau bagaimanapun, aksara input seterusnya "semua orang suka ais krim" masih ada dan digunakan oleh fmt.Scan berikutnya. Ini menyebabkan ralat, kerana fmt.Scan menjangkakan baris baharu pada penghujung input.

Alternatif

Untuk membaca baris teks termasuk ruang dan berakhir dengan baris baharu , pertimbangkan untuk menggunakan kaedah bufio.Reader's ReadString:

<code class="go">import "bufio"

func main() {
    reader := bufio.NewReader(os.Stdin)
    line, err := reader.ReadString('\n')
}</code>
Salin selepas log masuk

Kesimpulan

Memahami gelagat berbeza fmt.Scan dan fmt.Scanln adalah penting untuk mengelakkan ralat dan menulis kod yang sejajar dengan jangkaan. Apabila membaca baris teks, alternatif seperti bufio.Reader dan ReadString menyediakan penyelesaian yang lebih jelas dan cekap.

Atas ialah kandungan terperinci Apa yang Menyebabkan Ralat \'fmt.Scanln Jangkaan Newline\' dan Bagaimana untuk Menyelesaikannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!