我正在尝试将字符串中的整数列表扫描到数组(或切片)中package mainimport "fmt"func main() { var nums [5]int n, _ := fmt.Sscan("1 2 3 4 5", &nums) // doesn't work fmt.Println(nums)}我需要传递什么作为第二个参数才能Sscan使其工作?我知道我可以通过nums[0], nums[1] ...等,但我更喜欢一个论点。
3 回答
月关宝盒
TA贡献1772条经验 获得超5个赞
为了让它不仅仅适用于硬编码的字符串,最好使用bufio.Scanner, 和一个io.Reader接口来执行此操作:
package main
import (
"bufio"
"fmt"
"io"
"strconv"
"strings"
)
func scanInts(r io.Reader) ([]int, error) {
s := bufio.NewScanner(r)
s.Split(bufio.ScanWords)
var ints []int
for s.Scan() {
i, err := strconv.Atoi(s.Text())
if err != nil {
return ints, err
}
ints = append(ints, i)
}
return ints, s.Err()
}
func main() {
input := "1 2 3 4 5"
ints, err := scanInts(strings.NewReader(input))
if err != nil {
fmt.Println(err)
}
fmt.Println(ints)
}
产生:
[1 2 3 4 5]
- 3 回答
- 0 关注
- 167 浏览
添加回答
举报
0/150
提交
取消