主要使用fmt、bufio包

情况一 输入为确定的一个数字/字符串等,例如:输入2
var a1 int
fmt.Scan(&a1)

情况二 输入俩数字为一组,通过空格隔开,例如:输入2 3
1)
var a, b int
fmt.Scan(&a, &b)
2)
var num1, num2 int
fmt.Scanf("%d %d", &num1, &num2)

情况三 输入一行内容,可能包含空格或其他特殊符号等,需要获取整行内容,例如:输入hello,welcome!
1)
reader := bufio.NewReader(os.Stdin)
line, _, err := reader.ReadLine()
if err != nil {
    fmt.Println(err.Error())
}
2)
reader := bufio.NewReader(os.Stdin)
line, err := reader.ReadString('\n')
if err != nil {
    fmt.Println(err.Error())
}
注意:这里的line返回中包含'\n',区分1)中的line
3)
reader := bufio.NewReader(os.Stdin)
line, err := reader.ReadBytes('\n')
if err != nil {
    fmt.Println(err.Error())
}
注意:2)和3)其实是一样的,因为ReadString就是调用了ReadBytes方法
4)
scanner := bufio.NewScanner(os.Stdin)
if scanner.Scan() {
    fmt.Println(len(scanner.Text()))
}

情况四 输入多行内容
可以在3)基础上加for{}
比如:
scanner := bufio.NewScanner(os.Stdin)
for scanner.Scan() {
    fmt.Println(scanner.Text())
}