Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Mengeluarkan Watak Baris Baharu dengan Cekap daripada Rentetan Baca dalam Pergi?

Bagaimanakah Saya Boleh Mengeluarkan Watak Baris Baharu dengan Cekap daripada Rentetan Baca dalam Pergi?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-26 07:23:34719semak imbas

How Can I Efficiently Remove the Newline Character from a String Read in Go?

Pengeluaran Substring yang Cekap dalam Go

Apabila mengendalikan input daripada konsol, adalah perkara biasa untuk membaca keseluruhan baris untuk pemprosesan selanjutnya. Walau bagaimanapun, watak baris baharu boleh memberikan cabaran menggunakan bufio.ReadString(). Untuk menangani perkara ini, ada yang mencadangkan untuk memangkas aksara baris baharu secara manual.

input, _ := src.ReadString('\n')
inputFmt := input[0:len(input) - 2] + "" // Manual newline trimming

Adakah terdapat penyelesaian yang lebih elegan?

Untuk menjawab soalan ini, kita perlu menjelaskan dua konsep utama dalam Go:

  • Slices: Tidak seperti Tatasusunan gaya C, kepingan Go sememangnya menyimpan panjangnya dalam bait. Oleh itu, anda tidak perlu mengira panjang secara eksplisit sebelum menghiris.
  • Storan Rentetan: Rentetan Go tidak ditamatkan batal, jadi tidak perlu mengalih keluar bait nol semasa mengekstrak subrentetan.

Dengan mengambil kira konsep ini, pendekatan berikut memberikan yang lebih idiomatik dan cekap penyelesaian:

input, _ := src.ReadString('\n')
inputFmt := input[:len(input) - 1]

Versi ini hanya memotong rentetan input sehingga aksara terakhir (dengan mengandaikan ia adalah aksara satu bait). Ini mengelakkan manipulasi rentetan yang tidak perlu dan memastikan pengekstrakan subrentetan yang cekap.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengeluarkan Watak Baris Baharu dengan Cekap daripada Rentetan Baca dalam Pergi?. 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