在Go 中將數字掃描成切片
從Go 中的標準輸入讀取多個數字時,可以為各個變量賦值:
numbers := make([]int, 2) fmt.Fscan(os.Stdin, &numbers[0], &numbers[1])
但是,您可能想要簡化過程並直接讀入切片。 fmt 套件不支援掃描切片,但以下實用函數可以提供協助:
func packAddrs(n []int) []interface{} { p := make([]interface{}, len(n)) for i := range n { p[i] = &n[i] } return p }
此函數為輸入切片中的每個元素建立一個位址切片。使用此函數,您可以像這樣掃描切片:
numbers := make([]int, 2) n, err := fmt.Fscan(os.Stdin, packAddrs(numbers)...) fmt.Println(numbers, n, err)
使用 fmt.Sscan() 測試:
numbers := make([]int, 5) n, err := fmt.Sscan("1 3 5 7 9", packAddrs(numbers)...) fmt.Println(numbers, n, err)
輸出:
[1 3 5 7 9] 5 <nil>
以上是Go中如何有效率地將多個數字掃描到一個Slice中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!