键盘输入和打印输出
# 一、打印输出
# 1.1 fmt包
fmt包实现了类似C语言printf和scanf的格式化I/O.格式化verb('verb')源自C语言但更简单.
详见官网fmt的API:https://golang.google.cn/pkg/fmt/
# 1.2 导入包
import "fmt"
1
# 1.3 常用打印函数
- 打印
func Print(a ...interface{}) (n int, err error) (opens new window)
- 格式化打印
func Printf(format string, a ...interface{}) (n int, err error) (opens new window)
- 打印后换行
func Println(a ...interface{}) (n int, err error) (opens new window)
格式化打印中的常用占位符
格式化打印占位符:
%v,原样输出
%T,打印类型
%t,bool类型
%s,字符串
%f,浮点
%d,10进制的整数
%b,2进制的整数
%o,8进制
%x,%X,16进制
%x:0-9,a-f
%X:0-9,A-F
%c,打印字符
%p,打印地址
...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
示例代码
package main
import (
"fmt"
)
func main() {
a := 100 //int
b := 3.14 //float64
c := true // bool
d := "Hello World" //string
e := `Ruby` //string
f := 'A'
fmt.Printf("%T,%b\n", a, a)
fmt.Printf("%T,%f\n", b, b)
fmt.Printf("%T,%t\n", c, c)
fmt.Printf("%T,%s\n", d, d)
fmt.Printf("%T,%s\n", e, e)
fmt.Printf("%T,%d,%c\n", f, f, f)
fmt.Println("-----------------------")
fmt.Printf("%v\n", a)
fmt.Printf("%v\n", b)
fmt.Printf("%v\n", c)
fmt.Printf("%v\n", d)
fmt.Printf("%v\n", e)
fmt.Printf("%v\n", f)
}
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
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
运行结果:
# 二、键盘输入
# 2.1 fmt包读取键盘输入
常用方法
func Scan(a ...interface{}) (n int, err error) (opens new window)
func Scanf(format string, a ...interface{}) (n int, err error) (opens new window)
func Scanln(a ...interface{}) (n int, err error) (opens new window)
package main
import (
"fmt"
)
func main() {
var x int
var y float64
fmt.Println("请输入一个整数,一个浮点类型:")
fmt.Scanln(&x,&y)//读取键盘的输入,通过操作地址,赋值给x和y 阻塞式
fmt.Printf("x的数值:%d,y的数值:%f\n",x,y)
fmt.Scanf("%d,%f",&x,&y)
fmt.Printf("x:%d,y:%f\n",x,y)
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
运行结果:
# 2.2 bufio包读取
https://golang.google.cn/pkg/bufio/
bufio包中都是IO操作的方法:
先创建Reader对象:
然后就可以各种读取了:
示例代码:
package main
import (
"fmt"
"os"
"bufio"
)
func main() {
fmt.Println("请输入一个字符串:")
reader := bufio.NewReader(os.Stdin)
s1, _ := reader.ReadString('\n')
fmt.Println("读到的数据:", s1)
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
运行效果:
# 三、代码demo
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
/*
输入和输出:
fmt包: 输入,输出
输出:
Print()
Printf()
Println()
格式化打印占位符:
%v: 原样输出
%T: 打印类型
%t: bool类型
%s: 字符串
%f: 浮点
%d: 10进制证书
%b: 二进制整数
%o: 8进制
%x ,%X: 16进制
%x: 0-9,a-f
%X: 0-9,A-F
%c: 打印字符
%p: 打印地址
....
输入:
Scanln()
Bufio包:
主要是用来操作文件读写
*/
a := 100
b := 3.14
c := true
d := "Hello World"
e := `Ruby`
f := 'A'
fmt.Printf("%T,%b\n", a, a)
fmt.Printf("%T,%f\n", b, b)
fmt.Printf("%T,%t\n", c, c)
fmt.Printf("%T,%s\n", d, d)
fmt.Printf("%T,%s\n", e, e)
fmt.Printf("%T,%d,%c\n", f, f, f)
fmt.Println("---------------------------------------------------")
fmt.Printf("%v\n", a)
fmt.Printf("%v\n", b)
fmt.Printf("%v\n", c)
fmt.Printf("%v\n", d)
fmt.Printf("%v\n", e)
fmt.Printf("%v\n", f)
fmt.Println("---------------------------------------------------")
/* var x int
var y float64
fmt.Println("请输入一个整数,一个浮点类型: ")
fmt.Scanln(&x, &y) // 阻塞式子
fmt.Printf("a的数值: %d,b的数值: %f\n", x, y)
fmt.Scanf("%d,%f\n", x, y)
fmt.Printf("x:%d,,y:%f\n", x, y)*/
fmt.Println("请输入一个字符串")
reader := bufio.NewReader(os.Stdout)
s1, _ := reader.ReadString('\n')
fmt.Println("督导的数据: ", s1)
}
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
上次更新: 2024/04/09, 16:48:42
- 01
- AWS NAT-NetWork-Firwalld配置(一)04-09
- 02
- AWS NAT-NetWork-Firwalld配置(二)04-09
- 03
- kubernetes部署minio对象存储01-18