Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Membaca Berbilang Nombor dengan Cekap ke dalam Go Slice Menggunakan fmt.Fscan?

Bagaimanakah Saya Boleh Membaca Berbilang Nombor dengan Cekap ke dalam Go Slice Menggunakan fmt.Fscan?

Patricia Arquette
Patricia Arquetteasal
2024-12-16 21:53:15622semak imbas

How Can I Efficiently Read Multiple Numbers into a Go Slice Using fmt.Fscan?

Membaca Nombor ke Dalam Kepingan Menggunakan fmt.Fscan

Untuk membaca berbilang nombor ke dalam tatasusunan atau hirisan dalam Go menggunakan fmt.Fscan, ia adalah amalan biasa untuk mengisytiharkan pembolehubah individu dan memberikan alamatnya sebagai hujah:

numbers := make([]int, 2)
fmt.Fscan(os.Stdin, &numbers[0], &numbers[1])

Walau bagaimanapun, ia adalah tidak mungkin untuk meneruskan hirisan itu sendiri sebagai parameter kepada fmt.Fscan. Untuk memudahkan proses ini, anda boleh mencipta fungsi utiliti yang membungkus alamat elemen hirisan:

func packAddrs(n []int) []interface{} {
    p := make([]interface{}, len(n))
    for i := range n {
        p[i] = &n[i]
    }
    return p
}

Menggunakan fungsi ini, anda kini boleh mengimbas keseluruhan kepingan dengan fmt.Fscan:

numbers := make([]int, 2)
n, err := fmt.Fscan(os.Stdin, packAddrs(numbers)...) // ... unpacks the slice addresses
fmt.Println(numbers, n, err)

Sebagai contoh, pertimbangkan input ujian berikut:

1 3 5 7 9

Menggunakan fmt.Sscan untuk ujian tujuan:

numbers := make([]int, 5)
n, err := fmt.Sscan("1 3 5 7 9", packAddrs(numbers)...)
fmt.Println(numbers, n, err) // Output: [1 3 5 7 9] 5 <nil>

Ini menunjukkan cara membaca berbilang nombor ke dalam kepingan dengan cekap menggunakan fmt.Fscan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membaca Berbilang Nombor dengan Cekap ke dalam Go Slice Menggunakan fmt.Fscan?. 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