首页 >后端开发 >Golang >如何使用Go的fmt.Fscan高效地将多个数字扫描到数组中?

如何使用Go的fmt.Fscan高效地将多个数字扫描到数组中?

Patricia Arquette
Patricia Arquette原创
2024-11-26 07:31:10673浏览

How Can I Efficiently Scan Multiple Numbers into an Array Using Go's fmt.Fscan?

在 Go 中使用 fmt.Fscan 将数字扫描到数组

编程中常见的任务之一是读取用户的多个数字输入。在 Go 语言中,可以使用 fmt.Fscan 函数以及数组或切片来存储输入值来实现这一点。

考虑以下代码片段,其中提示用户输入两个数字:

numbers := make([]int, 2)
fmt.Fscan(os.Stdin, &numbers[0], &numbers[1])

通过提供各个数组元素(numbers[0]和numbers[1])的内存地址作为fmt.Fscan的参数,我们可以有效地读取和存储输入数组中的数字。

但是,我们需要一种更简洁的方法,我们可以直接将数字扫描到数组本身中。为了实现这一点,我们可以创建一个实用函数,它创建指向数组元素的指针切片:

func packAddrs(n []int) []interface{} {
    p := make([]interface{}, len(n))
    for i := range n {
        p[i] = &n[i]
    }
    return p
}

通过将 packAddrs 的结果传递给 fmt.Fscan,我们可以有效地将输入数字扫描到数组:

numbers := make([]int, 2)
n, err := fmt.Fscan(os.Stdin, packAddrs(numbers)...)
fmt.Println(numbers, n, err)

此方法提供了一种使用 fmt.Fscan 将多个数字读取到数组中的更简单、更有效的方法。当事先不知道输入值的数量时,它特别有用。

以上是如何使用Go的fmt.Fscan高效地将多个数字扫描到数组中?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn