The package fmtdoes not process scanning fragments, but you can create a utility function that combines the addresses of all elements:
func packAddrs(n []int) []interface{} {
p := make([]interface{}, len(n))
for i := range n {
p[i] = &n[i]
}
return p
}
And using this, you can scan the entire fragment as follows:
numbers := make([]int, 2)
n, err := fmt.Fscan(os.Stdin, packAddrs(numbers)...)
fmt.Println(numbers, n, err)
Testing with fmt.Sscan():
numbers := make([]int, 5)
n, err := fmt.Sscan("1 3 5 7 9", packAddrs(numbers)...)
fmt.Println(numbers, n, err)
Exit (try on Go Playground ):
[1 3 5 7 9] 5 <nil>
source
share