-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path交互模式进阶-读取用户的输入
55 lines (50 loc) · 2.19 KB
/
交互模式进阶-读取用户的输入
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
一.从控制台读取输入
我们如何读取用户的键盘(控制台)输入呢?从键盘和标准输入 os.Stdin 读取输入,
最简单的办法是使用 fmt 包提供的 Scan 和 Sscan 开头的函数。具体代码如下
package main
import "fmt"
var (
FirstName, SecondNames, ThirdNames string
i int
f float32
Input = "5.2 / 100 / Golang" //用户自定义变量,便于之后对这个字符串的处理。
format = "%f / %d / %s"
)
func main() {
fmt.Printf("Please enter your full name: ")
fmt.Scanln(&FirstName, &SecondNames) //Scanln 扫描来自标准输入的文本,将空格分隔的值依次存放到后续的参数内,直到碰到换行。
// fmt.Scanf("%s %s", &firstName, &lastName) //Scanf与其类似,除了 Scanf 的第一个参数用作格式字符串,用来决定如何读取。
fmt.Printf("Hi %s %s!\n", FirstName, SecondNames)
fmt.Sscanf(Input, format, &f, &i, &ThirdNames) //Sscan 和以 Sscan 开头的函数则是从字符串读取,
//除此之外,与 Scanf 相同。如果这些函数读取到的结果与您预想的不同,您可以检查成功读入数据的个数和返回的错误。
fmt.Println("From the Input we read: ", f, i, ThirdNames)
}
二.小试牛刀
以下是一个和用户进行交互的程序,将用户输入的字符串和数字进行打印,相当于一个echo的一个功能,具体需要打印的类型需要自行修改。
package main
import (
"bufio"
"os"
"fmt"
)
var (
String string
Number int
Input string
)
func main() {
f := bufio.NewReader(os.Stdin) //读取输入的内容
for {
fmt.Print("请输入一些字符串>")
Input,_ = f.ReadString('\n') //定义一行输入的内容分隔符。
if len(Input) == 1 {
continue //如果用户输入的是一个空行就让用户继续输入。
}
fmt.Printf("您输入的是:%s",Input)
fmt.Sscan(Input,&String,&Number) //将Input
if String == "stop" {
break
}
fmt.Printf("您输入的第一个参数是:·\033[31;1m%v\033[0m·,输入的第二个参数是··\033[31;1m%v\033[0m·.\n",String,Number)
}
}