201.go 从键盘读取数据
使用fmt.XXX方法
package main
import (
"bufio"
"fmt"
"os"
"strings"
)
var (
a string
b int
c bool
)
func test_fmt() {
n, err := fmt.Scanf("%s %d %t", &a, &b, &c) // hello 10 true
// fmt.Scanf会将你通过空格分隔的字符串填充到对应的为, 返回n表示正确填充数, err表示是否出错,遇到换行结束
fmt.Println(n, err)
fmt.Println(a, b, c)
}
func test_fmt2() {
n, err := fmt.Scanln(&a, &b, &c) // hello 10 true
// fmt.Scanln会将你通过空格分隔的字符串填充到对应的为, 返回n表示正确填充数, err表示是否出错, 遇到换行结束
// 可以发现不需要输入类型, 他会根据你定义的类型进行推断
fmt.Println(n, err)
fmt.Println(a, b, c)
fmt.Printf("%T %T %T\n", a, b, c)
}
使用bufio 读取整行数据
package main
import (
"bufio"
"fmt"
"os"
"strings"
)
var (
a string
b int
c bool
)
func test_bufio() {
// 从stdin中取内容直到遇到换行符,停止, 读取一整行不对其中的空格进行处理
input, err := bufio.NewReader(os.Stdin).ReadString('\n')
if err != nil {
panic(err)
}
fmt.Println("你输入的内容是:", strings.TrimSpace(input)) // 你输入的内容是: hello 10 int
}
func test_bufio2() {
fmt.Println("请输入需要打印的内容, exit表示退出")
input := bufio.NewScanner(os.Stdin) // 突然想到了java的从键盘读取数据
for {
fmt.Print(">>> ")
input.Scan() // 读取用户数据
if strings.Compare(strings.TrimSpace(input.Text()), "") == 0 {
continue
}
if strings.Compare(strings.TrimSpace(input.Text()), "exit") == 0 {
os.Exit(0)
}
fmt.Println("输入的内容是:", input.Text())
}
}
参考:

浙公网安备 33010602011771号