Bagaimana untuk Membaca Integer daripada Input Dipisahkan Angkasa di Golang: Pendekatan Rekursif?

DDD
Lepaskan: 2024-10-30 21:01:30
asal
126 orang telah melayarinya

How to Read Integers from Space-Separated Input in Golang: A Recursive Approach?

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>
Salin selepas log masuk

Contoh Output

Andaikan input standard mengandungi integer:

Enter the number of integers
3
Enter the integers
23 45 66
Salin selepas log masuk

Menjalankan program akan mengeluarkan:

[23 45 66]
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
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
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!