用 Decoder 解析数据流
上面都是使用的 UnMarshall 解析的 JSON 数据,如果 JSON 数据的载体是打开的文件或者 HTTP 请求体这种数据流(他们都是 io.Reader 的实现),我们不必把 JSON 数据读取出来后再去调用 encode/json 包的 UnMarshall 方法,包提供的 Decode 方法可以完成读取数据流并解析 JSON 数据最后填充变量的操作。
// This example uses a Decoder to decode a stream of distinct JSON values.
func ExampleDecoder() {
const jsonStream = `
{"Name": "Ed", "Text": "Knock knock."}
{"Name": "Sam", "Text": "Who's there?"}
{"Name": "Ed", "Text": "Go fmt."}
{"Name": "Sam", "Text": "Go fmt who?"}
{"Name": "Ed", "Text": "Go fmt yourself!"}
type Message struct {
Name, Text string
dec := json.NewDecoder(strings.NewReader(jsonStream))
for {
var m Message
if err := dec.Decode(&m); err == io.EOF {
break
} else if err != nil {
log.Fatal(err)
fmt.Printf("%s: %s\n", m.Name, m.Text)
// Output:
// Ed: Knock knock.
// Sam: Who's there?
// Ed: Go fmt.
// Sam: Go fmt who?
// Ed: Go fmt yourself!
python中两个方括号内代表什么 python两个加号
Python-2.2-运算符运算符算术运算符比较运算符赋值运算符逻辑运算符成员运算符身份运算符运算符优先级问题 运算符由一个以上的值经过一系列的运算得到新值的过程就叫运算用来操作运算的符号叫运算符运算符分类
算术运算符比较或者关系运算符赋值运算符逻辑运算符号位运算(二进制)成员运算符身份运算符表达式
由一个或几个数字或者变量或者运算符合成第一行代码通常返回一个结果#表达式案例