Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Scan lwn Scanln in Go: Memahami Gelagat Baris Baharu yang Dijangka

Scan lwn Scanln in Go: Memahami Gelagat Baris Baharu yang Dijangka

Barbara Streisand
Barbara Streisandasal
2024-10-24 02:54:02296semak imbas

Scan vs. Scanln in Go: Understanding the Expected Newline Behavior

fmt.Scanln Jangkaan Ralat Baris Baharu: Memahami Gelagat

Fungsi fmt.Scanln dalam Go menimbulkan ralat apabila menemui baris baharu yang hilang selepas membaca baris input. Tingkah laku ini, tidak seperti kaedah getline dalam C , adalah disengajakan dan didorong oleh pelaksanaan khusus fmt.Scanln.

Scan vs. Scanln

fmt.Scan reads input nilai yang diasingkan ruang dan menyimpannya dalam argumen yang ditentukan. Baris baharu dianggap sebagai aksara ruang. Sebaliknya, fmt.Scanln berhenti mengimbas pada baris baharu dan mesti ada baris baharu selepas item terakhir diimbas. Perbezaan ini timbul daripada penggunaan yang dimaksudkan:

  • fmt.Scan digunakan untuk mengimbas berbilang nilai yang diasingkan ruang individu pada satu baris.
  • fmt.Scanln direka untuk mengimbas lengkap baris input, termasuk sebarang aksara ruang putih dan baris baharu.

Ralat

Apabila menggunakan fmt.Scanln tanpa baris baharu selepas input, ralat berlaku dicetuskan kerana fungsi menjangkakan baris baharu untuk menamatkan baris itu. Mesej ralat, "Imbas: garis baharu dijangka," menunjukkan keadaan ini.

Perbandingan dengan getline dalam C

Kaedah getline dalam C membaca baris input dan menyimpan dalam pembolehubah rentetan yang disediakan. Tidak seperti fmt.Scanln, getline tidak memerlukan baris baharu pada penghujung input. Perbezaan ini disebabkan oleh fakta bahawa getline biasanya digunakan untuk membaca keseluruhan baris, manakala fmt.Scanln direka untuk mengimbas nilai tertentu dalam baris.

Alternatif untuk Bacaan Baris

Jika anda perlu membaca baris input lengkap dalam Go, anda boleh menggunakan kaedah ReadString bufio.Reader type:

<code class="go">line, err := buffer.ReadString('\n')</code>

Kaedah ini membaca input sehingga aksara baris baharu ditemui dan disimpan baris dalam pembolehubah baris.

Dengan memahami gelagat fmt.Scanln dan perbezaannya daripada kaedah getline C, anda boleh menggunakan fungsi ini dengan berkesan untuk mengendalikan penghuraian input dalam program Go anda.

Atas ialah kandungan terperinci Scan lwn Scanln in Go: Memahami Gelagat Baris Baharu yang Dijangka. 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