/
reader.go
121 lines (107 loc) · 2.86 KB
/
reader.go
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
package main
import "bytes"
import "bufio"
import "fmt"
var str = "链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer).由于不必须按顺序存储,链表在插入的时候可以达到O(1)的复杂度,比另一种线性表顺序表快得多,但是查找一个节点或者访问特定编号的节点则需要O(n)的时间,而顺序表相应的时间复杂度分别是O(logn)和O(1)."
func read() {
fmt.Println("------read------")
data := []byte(str)
rd := bytes.NewReader(data)
r := bufio.NewReader(rd)
var buf [128]byte
n, err := r.Read(buf[:])
fmt.Println(string(buf[:n]), n, err)
}
func readByte() {
fmt.Println("------readByte------")
data := []byte(str)
rd := bytes.NewReader(data)
r := bufio.NewReader(rd)
c, err := r.ReadByte()
fmt.Println(string(c), err)
}
func readBytes() {
fmt.Println("------readBytes------")
data := []byte(str)
rd := bytes.NewReader(data)
r := bufio.NewReader(rd)
var delim byte = ','
line, err := r.ReadBytes(delim)
fmt.Println(string(line), err)
}
func readLine() {
fmt.Println("------readLine------")
data := []byte("Hello\nLibre")
rd := bytes.NewReader(data)
r := bufio.NewReader(rd)
line, prefix, err := r.ReadLine()
fmt.Println(string(line), prefix, err)
}
func readRune() {
fmt.Println("------readRune------")
data := []byte(str)
rd := bytes.NewReader(data)
r := bufio.NewReader(rd)
ch, size, err := r.ReadRune()
fmt.Println(string(ch), size, err)
}
func readSlice() {
fmt.Println("------readSlice------")
data := []byte("Hello,Libre")
rd := bytes.NewReader(data)
r := bufio.NewReader(rd)
var delim byte = ','
line, err := r.ReadSlice(delim)
fmt.Println(string(line), err)
line, err = r.ReadSlice(delim)
fmt.Println(string(line), err)
line, err = r.ReadSlice(delim)
fmt.Println(string(line), err)
}
func readString() {
fmt.Println("------readString------")
data := []byte("Hello,Libre")
rd := bytes.NewReader(data)
r := bufio.NewReader(rd)
var delim byte = ','
line, err := r.ReadString(delim)
fmt.Println(line, err)
}
func buffered() {
fmt.Println("------buffered------")
data := []byte("Hello,Libre")
rd := bytes.NewReader(data)
r := bufio.NewReader(rd)
var buf [8]byte
n, err := r.Read(buf[:])
fmt.Println(string(buf[:n]), n, err)
rn := r.Buffered()
fmt.Println(rn)
n, err = r.Read(buf[:])
fmt.Println(string(buf[:n]), n, err)
rn = r.Buffered()
fmt.Println(rn)
}
func peek() {
fmt.Println("------peek------")
data := []byte("Hello,Libre")
rd := bytes.NewReader(data)
r := bufio.NewReader(rd)
bl, err := r.Peek(2)
fmt.Println(string(bl), err)
bl, err = r.Peek(8)
fmt.Println(string(bl), err)
bl, err = r.Peek(20)
fmt.Println(string(bl), err)
}
func main() {
read()
readByte()
readBytes()
readLine()
readRune()
readSlice()
readString()
buffered()
peek()
}