1、最基本版本
最简单的输入
package main
import "fmt"
func main() {
var N int
/*
比如,输入一个数,然后回车,还要继续输入,其他的。
Scan函数,并不捕获回车,如果后续仍旧还有输入的话,这个回车就会被其他输入函数捕获
Scanln函数,可以捕获上述回车,不会影响后续输入
Scanf函数也不能捕获回车。如果要捕获回车,只能这样
*/
fmt.Scan(&N) //不能捕获回车
fmt.Scanln(&N) //可以捕获回车
fmt.Scanf("%d", N) //不能捕获回车
fmt.Scanf("%d\n", N) //捕获回车
}
2、多行输入
第一行输入一个N,第二行输入N个值
package main
import "fmt"
func main() {
/*
第一行输入一个N,第二行输入N个值
*/
var N int
fmt.Scanln(&N) //因为后续还有输入,所以需要捕获第一次输入的回车
list := make([]int, N)
for i := 0; i < N; i++ {
fmt.Scanf("%d", &list[i]) //这可以用,建议用这个
fmt.Scan(&list[i]) //这个也可以
//fmt.Scanln(&list[i]) //该情况下,这个函数不能使用,输入不正确
}
fmt.Println(list)
}
3、循环输入
多重输入,未告知输入数量
package main
import "fmt"
func main() {
/*
先输入一个数N,回车
再输入一行数据(但是个数未知),回车
再输入一个数据M回车
*/
/*
例如:
2
1 2 3 4 5 6 7
5
*/
/*
例如:
2
1,2,3,4,5,6,7 这种也能捕获
5
*/
var N int
fmt.Scanln(&N) //后续还有输入,应该捕获回车
list := make([]int, 0)
temp := 0
for {
_, err := fmt.Scanf("%d", &temp) //直接用这个就好
//_, err := fmt.Scan(&s) //这两个都不行
//_, err := fmt.Scanln(&s)
if err != nil { //Scanf当检查到最后一个数据的时候,err不在是nil,直接跳出就行
break
}
list = append(list, temp)
}
var M int
fmt.Scanln(&M) //这个用哪个都行
fmt.Println(list, N, M)
}