Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Membaca Integer daripada Input Dipisahkan Angkasa di Golang: Pendekatan Rekursif?
Baca Integer daripada Input Diasingkan Angkasa di Golang: Pendekatan Cekap
Dalam pengaturcaraan, membaca set integer yang dipisahkan oleh ruang daripada input standard dan menyimpannya dalam tatasusunan dengan cekap adalah tugas biasa. Satu cara untuk mencapai ini ialah menggunakan gelung mudah untuk. Walau bagaimanapun, terdapat teknik yang memanfaatkan rekursi untuk meminimumkan kod sambil mengekalkan prestasi optimum.
Menggunakan Rekursi Tanpa Gelung Eksplisit
Coretan kod Go berikut menunjukkan cara membaca integer daripada input standard tanpa menggunakan gelung for atau goto:
<code class="go">package main import "fmt" func main() { var n int fmt.Println(`Enter the number of integers`) if _, err := fmt.Scan(&n); err != nil { panic(err) } fmt.Println(`Enter the integers`) all := make([]int, n) ReadN(all, 0, n) fmt.Println(all) } // Recursively reads n integers into all starting from position i. func ReadN(all []int, i, n int) { if n == 0 { return } if _, err := fmt.Scan(&all[i]); err != nil { panic(err) } ReadN(all, i+1, n-1) }</code>
Contoh Output
Andaikan input standard mengandungi integer:
Enter the number of integers 3 Enter the integers 23 45 66
Menjalankan program akan mengeluarkan:
[23 45 66]
Mengoptimumkan Pengimbasan Input
Untuk mengoptimumkan lagi pengimbasan input, pertimbangkan untuk menggantikan fungsi fmt.Scan dalam ReadN dengan pembaca tersuai yang membolehkan pemprosesan input lebih pantas:
<code class="go">type reader struct { val int } func (r *reader) Read(b []byte) (int, error) { w, err := fmt.Scanf("%d", &r.val) if err != nil { return w, err } b[0] = byte(r.val) return 1, err }</code>
Dalam pelaksanaan yang dioptimumkan ini, pembaca tersuai dicipta dengan val medan untuk memegang nilai integer. Kaedah Baca menggunakan fmt.Scanf untuk membaca integer daripada input standard dan menyimpannya dalam val. Apabila membaca daripada pembaca tersuai, hanya satu bait diproses, dengan ketara mengurangkan overhed.
Dengan menggabungkan teknik ini, anda boleh membaca set integer dengan cekap daripada input standard di Golang, memaksimumkan prestasi sambil meminimumkan kerumitan kod.
Atas ialah kandungan terperinci Bagaimana untuk Membaca Integer daripada Input Dipisahkan Angkasa di Golang: Pendekatan Rekursif?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!