第四章 复合数据类型
基础数据类型是Go语言世界的原子
复合数据类型包括四种:slice、map、 struct、array
数组和结构体是聚合类型,它们的值由许多元素或成员构成,数组和结构体都是固定内存大小的数据结构,,相比之下,slice和map则是动态的数据结构,它们将根据动态增长
4.5 JSON
JavaScript对象表示法(JSON)是一种用于发送和接收结构化信息的标准协议。类似的协议还有XML、ASN.1和Google的Protocol Buffer等,但JASON应用的最广泛
Go语言中对JSON的支持是encoding/json包
JSON是对JavaScript中各种类型的值-字符串、数字、布尔值和对象—Unicode本文编码,它可以用有效可读的方式表示基础数据类型和聚合数据类型
基本的JSON类型有数字(十进制或科学记数法)、布尔值、字符串,其中字符串是以双引号包含的Unicode字符序列,支持和Go语言类似的反斜杠转义特性,不过JSON使用的是\Uhhhh转义数字来表示一个UTF-16编码,而不是Go语言的rune类型
这些基础类型可以通过JSON的数组和对象类型进行递归组合。
一个JSON数组是一个有序的值序列,写在一个方括号中并以逗号分隔;一个JSON数组可以用于编码Go语言的数组和slice
一个JSON对象是一个字符串到值的映射,写成以系列的name:value对形式,用花括号包含并以逗号分隔;JSON的对象类型可以用于编码Go语言的map类型(key类型是字符串)和结构体,例如:
boolean true
number -273.15
string "she said \"Hello, BF\""
array ["gold","silver","bronze"]
objetct {
"year":1980,
"event":"archery",
"medals":["gold","sliver","bronze"]}
思考一个程序:该程序负责收集各种电影评论并提供反馈功能,它的Movie数据类型和一个典型的表示电影的值列表如下所示: