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