golang--获取和存储数量不定的输入数据
程序员文章站
2022-03-12 08:09:13
开始:一直有写博客的心,也一直在向大家推荐这种方式,现在终于轮到自己尝试开始写了! 目的: 记录自己的学习过程,以公开发布的方式让自己认真对待学习! 目录: 1. 实用场景 2. 错误分析 3. 解决 1. 实用场景: 经常会用到从golang的控制台输入数据并获取数据存储下来。但是由于获取的数据的 ......
开始:一直有写博客的心,也一直在向大家推荐这种方式,现在终于轮到自己尝试开始写了!
目的: 记录自己的学习过程,以公开发布的方式让自己认真对待学习!
目录:
1. 实用场景
2. 错误分析
3. 解决
1. 实用场景:
经常会用到从golang的控制台输入数据并获取数据存储下来。但是由于获取的数据的个数并不知道,需要根据其他的条件共同决定。
举个例子:1. 从控制台数据一个int数据来指示要获取数据的个数
2. 根据第一步获取的数据,完成对应数据的获取和存储
输入:4
4 0
2 0
0 8
2 9
输出:[4 2 0 2] [0 0 8 9]
2. 错误分析:
直接来看看我的错误:
package main import ( "fmt" ) func main() { var ( N int H []int//定义一个空切片 S []int ) fmt.Scanln(&N) for i := 0; i < N; i++ { fmt.Scanln(&H[i], &S[i])//panic: runtime error: index out of range } fmt.Println(H, S) }
分析:首先整体思路是对的,定义两个切片来存储获取的数据并用for循环来存储,但是忽略了定义的是一个空切片,在循环的时候不能进行遍历,所有报错了。
3. 解决:
只有先找到错误并分析,才能解决问题
package main import ( "fmt" ) func main() { var ( N int H []int S []int ) fmt.Scanln(&N) for i := 0; i < N; i++ { var h, s int fmt.Scanln(&h, &s)//临时存储 H = append(H, h)//追加到切片中 S = append(S, s) } fmt.Println(H, S) }
输入:
2
0 8
2 0
输出:
[0 2] [8 0]