Menghuraikan Nombor daripada Input Standard dalam Go
Apabila bekerja dengan berbilang input angka, Go membenarkan pembangun menggunakan berbilang pembolehubah untuk menangkap nilai individu. Walau bagaimanapun, bagaimana jika anda ingin memudahkan proses ini dan menyimpan semua nombor dalam tatasusunan atau kepingan tunggal?
Pertimbangkan coretan kod berikut:
numbers := make([]int, 2) fmt.Fscan(os.Stdin, &numbers[0], &numbers[1])
Kod ini membaca dua nombor dan menyimpan dengan cekap mereka dalam kepingan nombor. Walau bagaimanapun, jika anda mempunyai bilangan input yang banyak, pendekatan ini boleh menjadi lebih jelas.
Bolehkah anda membaca nombor terus ke dalam kepingan menggunakan fmt.Fscan()?
Malangnya, pakej fmt tidak menyokong pengimbasan ke dalam kepingan. Untuk mengatasi had ini, anda boleh mencipta fungsi utiliti tersuai untuk membungkus alamat semua elemen keping ke dalam tatasusunan antara muka:
func packAddrs(n []int) []interface{} { p := make([]interface{}, len(n)) for i := range n { p[i] = &n[i] } return p }
Fungsi ini berulang melalui kepingan, mencipta tatasusunan penunjuk kepada setiap elemen .
Menggunakan fungsi packAddrs() untuk mengimbas ke dalam kepingan
Dengan Fungsi packAddrs(), kini 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)
Fungsi packAddrs() menukarkan kepingan itu kepada pelbagai antara muka, membenarkan fmt.Fscan() mengimbas ke dalam setiap elemen.
Contoh menggunakan fmt.Sscan() untuk ujian
numbers := make([]int, 5) n, err := fmt.Sscan("1 3 5 7 9", packAddrs(numbers)...) fmt.Println(numbers, n, err)
Dalam contoh ini, saya sedang menguji kod menggunakan fmt.Sscan(). Ia memerlukan rentetan sebagai input dan mengembalikan nilai yang diimbas. Output kod ini ialah:
[1 3 5 7 9] 5 <nil>
Ini menunjukkan cara anda boleh membaca berbilang nombor ke dalam kepingan dengan cekap dengan menggunakan fungsi utiliti packAddrs().
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!