首页 > 后端开发 > Golang > Go中如何高效地将多个数字扫描到一个Slice中?

Go中如何高效地将多个数字扫描到一个Slice中?

Barbara Streisand
发布: 2024-12-17 09:37:25
原创
924 人浏览过

How to Efficiently Scan Multiple Numbers into a Slice in Go?

在 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板