为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 fmt.Sscan 将整数解析为数组?

如何使用 fmt.Sscan 将整数解析为数组?

Go
紫衣仙女 2021-09-13 19:44:32
我正在尝试将字符串中的整数列表扫描到数组(或切片)中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]


查看完整回答
反对 回复 2021-09-13
  • 3 回答
  • 0 关注
  • 167 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信