Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Mengimbas Berbilang Nombor dengan Cekap ke dalam Slice dalam Go?

Bagaimana untuk Mengimbas Berbilang Nombor dengan Cekap ke dalam Slice dalam Go?

Barbara Streisand
Barbara Streisandasal
2024-12-17 09:37:25923semak imbas

How to Efficiently Scan Multiple Numbers into a Slice in Go?

Mengimbas Nombor ke dalam Slices dalam Go

Apabila membaca berbilang nombor daripada input standard dalam Go, anda boleh menetapkan nilai kepada pembolehubah individu:

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

Walau bagaimanapun, anda mungkin mahu memudahkan proses dan membaca terus ke dalam kepingan. Pakej fmt tidak menyokong pengimbasan ke dalam kepingan, tetapi fungsi utiliti berikut boleh membantu:

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

Fungsi ini mencipta kepingan alamat untuk setiap elemen dalam kepingan input. Dengan fungsi ini, anda boleh mengimbas ke dalam kepingan seperti ini:

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

Menguji ini dengan fmt.Sscan():

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>

Atas ialah kandungan terperinci Bagaimana untuk Mengimbas Berbilang Nombor dengan Cekap ke dalam Slice dalam Go?. 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