游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

golang2021数据格式(68)Go语言使用匿名结构体解

  JavaScript对象表示法(JSON)是一种用于发送和接收结构化信息的标准协议。在类似的协议中,JSON并不是唯一的一个标准协议。XML、ASN。1和Google的ProtocolBuffers都是类似的协议,并且有各自的特色,但是由于简洁性、可读性和流行程度等原因,JSON是应用最广泛的一个。
  Go语言对于这些标准格式的编码和解码都有良好的支持,由标准库中的encodingjson、encodingxml、encodingasn1等包提供支持,并且这类包都有着相似的API接口。
  基本的JSON类型有数字(十进制或科学记数法)、布尔值(true或false)、字符串,其中字符串是以双引号包含的Unicode字符序列,支持和Go语言类似的反斜杠转义特性,不过JSON使用的是Uhhhh转义数字来表示一个UTF16编码,而不是Go语言的rune类型。
  手机拥有屏幕、电池、指纹识别等信息,将这些信息填充为JSON格式的数据。如果需要选择性地分离JSON中的数据则较为麻烦。Go语言中的匿名结构体可以方便地完成这个操作。
  首先给出完整的代码,然后再讲解每个部分。
  packagemain
  import(
  encodingjson
  fmt
  )
  定义手机屏幕
  typeScreenstruct{
  Sizefloat32屏幕尺寸
  ResX,ResYint屏幕水平和垂直分辨率
  }
  定义电池
  typeBatterystruct{
  Capacityint容量
  }
  生成json数据
  funcgenJsonData()〔〕byte{
  完整数据结构
  raw:struct{
  Screen
  Battery
  HasTouchIDbool序列化时添加的字段:是否有指纹识别
  }{
  屏幕参数
  Screen:Screen{
  Size:5。5,
  ResX:1920,
  ResY:1080,
  },
  电池参数
  Battery:Battery{
  2910,
  },
  是否有指纹识别
  HasTouchID:true,
  }
  将数据序列化为json
  jsonData,:json。Marshal(raw)
  returnjsonData
  }
  funcmain(){
  生成一段json数据
  jsonData:genJsonData()
  fmt。Println(string(jsonData))
  只需要屏幕和指纹识别信息的结构和实例
  screenAndTouch:struct{
  Screen
  HasTouchIDbool
  }{}
  反序列化到screenAndTouch
  json。Unmarshal(jsonData,screenAndTouch)
  输出screenAndTouch的详细结构
  fmt。Printf(v,screenAndTouch)
  只需要电池和指纹识别信息的结构和实例
  batteryAndTouch:struct{
  Battery
  HasTouchIDbool
  }{}
  反序列化到batteryAndTouch
  json。Unmarshal(jsonData,batteryAndTouch)
  输出screenAndTouch的详细结构
  fmt。Printf(v,batteryAndTouch)
  }
  定义数据结构
  首先,定义手机的各种数据结构体,如屏幕和电池,参考如下代码:
  定义手机屏幕
  typeScreenstruct{
  Sizefloat32屏幕尺寸
  ResX,ResYint屏幕水平和垂直分辨率
  }
  定义电池
  typeBatterystruct{
  Capacityint容量
  }
  上面代码定义了屏幕结构体和电池结构体,它们分别描述屏幕和电池的各种细节参数。
  准备JSON数据
  准备手机数据结构,填充数据,将数据序列化为JSON格式的字节数组,代码如下:
  生成JSON数据
  funcgenJsonData()〔〕byte{
  完整数据结构
  raw:struct{
  Screen
  Battery
  HasTouchIDbool序列化时添加的字段:是否有指纹识别
  }{
  屏幕参数
  Screen:Screen{
  Size:5。5,
  ResX:1920,
  ResY:1080,
  },
  电池参数
  Battery:Battery{
  2910,
  },
  是否有指纹识别
  HasTouchID:true,
  }
  将数据序列化为JSON
  jsonData,:json。Marshal(raw)
  returnjsonData
  }
  代码说明如下:
  第4行定义了一个匿名结构体。这个结构体内嵌了Screen和Battery结构体,同时临时加入了HasTouchID字段。
  第10行,为刚声明的匿名结构体填充屏幕数据。
  第17行,填充电池数据。
  第22行,填充指纹识别字段。
  第26行,使用json。Marshal进行JSON序列化,将raw变量序列化为〔〕byte格式的JSON数据。
  分离JSON数据
  调用genJsonData获得JSON数据,将需要的字段填充到匿名结构体实例中,通过json。Unmarshal反序列化JSON数据达成分离JSON数据效果。代码如下:
  funcmain(){
  生成一段JSON数据
  jsonData:genJsonData()
  fmt。Println(string(jsonData))
  只需要屏幕和指纹识别信息的结构和实例
  screenAndTouch:struct{
  Screen
  HasTouchIDbool
  }{}
  反序列化到screenAndTouch中
  json。Unmarshal(jsonData,screenAndTouch)
  输出screenAndTouch的详细结构
  fmt。Printf(v,screenAndTouch)
  只需要电池和指纹识别信息的结构和实例
  batteryAndTouch:struct{
  Battery
  HasTouchIDbool
  }{}
  反序列化到batteryAndTouch
  json。Unmarshal(jsonData,batteryAndTouch)
  输出screenAndTouch的详细结构
  fmt。Printf(v,batteryAndTouch)
  }
  代码说明如下:
  第4行,调用genJsonData()函数,获得〔〕byte类型的JSON数据。
  第6行,将jsonData的〔〕byte类型的JSON数据转换为字符串格式并打印输出。
  第9行,构造匿名结构体,填充Screen结构和HasTouchID字段,第12行中的{}表示将结构体实例化。
  第15行,调用json。Unmarshal,输入完整的JSON数据(jsonData),将数据按第9行定义的结构体格式序列化到screenAndTouch中。
  第18行,打印输出screenAndTouch中的详细数据信息。
  第21行,构造匿名结构体,填充Battery结构和HasTouchID字段。
  第27行,调用json。Unmarshal,输入完整的JSON数据(jsonData),将数据按第21行定义的结构体格式序列化到batteryAndTouch中。
  第30行,打印输出batteryAndTouch的详细数据信息。

有关保留的近义词,反义词和造句【保留解释】:保存不变:遵义会议会址还着它当年的面貌。暂时留着不处理:不同的意见暂时,下次再讨论。表示不赞同或有异议:他对这个决议持态度。留下,不拿出来:他的藏书大部分都赠给国……重磅来袭!Python3。10正式版发布了!我还在用3。6来源:juejin。cnpost7015590447745613854Python3。10正式发布,你尝鲜了吗?本文参考自Python官方文档:PythonRele……DysonPureCool空气净化风扇让洁净的空气覆盖房子的Dyson又来了,一直以来Dyson都在家居方面都是黑科技的典型代表,DysonPureCool空气净化风扇在家居环境中在空调、传统空气净化器面前会不会成为鸡肋呢?随着人……幼儿园专注力活动教案培养幼儿口语完整的表达能力,并在循序渐进的达成目标的过程中,增强幼儿自信心和社交能力。以下内容是小编为您精心整理的幼儿园专注力活动教案,欢迎参考!幼儿园专注力活动教案……不厌其烦的反义词是什么不厌其烦是什么意思呢?不厌其烦的反义词是什么呢?下面小编来告诉你们,希望能帮到大家!不厌其烦(bynqfn):不嫌烦琐与麻烦,形容耐心。出自清夏敬渠《野叟曝言》第一……养育的近义词有哪些有关养育的近义词大家知道有哪些吗?以下是小编为大家整理的养育的近义词及其相关知识解析,希望能帮到您。养育的近义词培育:1。培养幼小生物,使其发育成长。2。指使某种培……功劳是什么意思《文子middot;上义》:ldquo;夫释职事而听非誉,弃功劳而用朋党,即奇伎逃亡,守职不进。rdquo;下面是品学网网站为大家整理的功劳是什么意思,希望大家喜欢!功劳的意思……人教版六年级下成长足迹难忘小学生活语文教案教材分析当我们开始这一次综合性学习的时候,学生已经在小学学习了六年,并且即将离开小学,开始新的学习生活。六年来,学生从天真烂漫的幼儿成长为身心健壮的少年,这既是孩子自己努……小鞋找朋友幼儿园托班社会教案活动背景:托班幼儿年龄小,生活自理能力较弱,午睡起床后穿鞋时,经常把鞋穿反。于是,我组织了一系列游戏活动,让幼儿在游戏中学会把鞋穿正。活动目标:认识鞋有反正,……人教新课标一年级上册语文菜园里说课稿我说课的内容是人教版义务教育课程标准实验教科书语文第一册识字(二)中的第三篇课文《菜园里》。本课以一幅菜园丰收图为背景,配有九个蔬菜名称,和一首带有六种蔬菜特征的韵文组成。本文……长方形的周长教学设计范文教学内容:人教版九年义务教育五年制小学数学第四册第153页及练习四十第68题。教学目的:1。认识长方体中的长方形面,能够引导学生初步理解由面组成体的意义。2。使学生……小学我要的是葫芦教学设计范文教学目标:一、教养目标:1、学会本课9个生字及新词。2、理解课文内容,了解植物的叶子与果实之间的关系。3、正确、流利、有感情地朗读课文。二、发展目……
直线平行的条件说课稿范文一、教材分析1、教材的地位和作用本课位于人民教育出版社义务教育课程标准实验教科书七年级下册第五章第二节第一课时。主要内容是让学生在充分感性认识的基础上体会平行线的三……人音版八年级音乐上册走进京剧教学反思范文京剧对于现在的初中生来说,相对陌生,怎样让同学们体味京剧艺术的魅力?怎样提升他们对京剧艺术的鉴赏能力?怎样培养他们对国粹京剧的兴趣和热爱?这些都是我努力思考的问题。为了达到教学……顶岗实习生实习体会教学反思指导反思一、初始状态教学反思,我们每周都需要写一篇教学反思,直到老师给我们教学反思指导之后,我才知道自己的反思不算反思,顶多算一个总结。我自己的教学反思就是从两个方面来说,……理想的风筝优秀说课稿一、说教材:本单元的主题是师恩难忘。单元目标是:在阅读本组这些生动感人的故事时,思想受到感染熏陶,情感得到陶冶升华,感受到人物心灵的美好和品质的高尚。懂得在阅读的时……1AUnit3Thisismymumunit3thisismymumteachingaimsandrequirements:1复习12单元,并能灵活运用。2。学会并掌握单词dad,mum,tea……一年级品德与社会上册中国人过新年教案教学目标:1。通过对我国人民过新年的多种方式的学习,让学生了解我国的传统文化和民间风俗。2。让学生知道我国各少数民族也有各自多彩的新年节日,初步进行多元文化的启蒙教……奔流不息的近义词奔流不息,读音BnLuBX,汉语词语,基本意思为水流奔腾而不停止。一、【近义词】奔腾不息,川流不息二、【词语注音】bnlubX三、【基本词意】……复式统计表教学及反思今天,在货隆中心小学五(5)上了统计这一课,本课内容是在学生学了单式统计表后学习复式统计表的,让学生能根据制作的统计表正确填写数据,掌握复式统计表的特点,进一步感受统计在生活中……幼儿园优质课的说课稿幼儿园优质课说课稿(一)活动目标观赏周边的宝塔,有兴趣了解它的历史和典故,知道它是我国古代优秀的建筑之一,愿用折纸的方式表现宝塔的魅力。活动设计第一时段……关于初中教学反思生物生物教学要求:一个称职的初中生物教师,决不能ldquo;教书匠rdquo;式地ldquo;照本宣科rdquo;,要在教学中不断反思,不断学习,与时共进。新课程提倡培养学生独立思……大班音乐春天在哪里教学反思范文情景描述:《春天在哪里》是一首孩子们很熟悉的歌曲。在本次音乐活动中,第一环节我先让幼儿通过欣赏歌曲来感知乐曲的欢快、抒情,从而熟悉歌曲的旋律。第二环节通过图片欣赏帮助幼儿再次感……课文千年梦圆在今朝教学设计学习目标1认识瑰丽、尝试、火箭、捆绑、探索、惨重、穿越、振奋、规模、协作、精细、宛若、概括、评价、魄力、嫦娥奔月、炎黄子孙、积劳成疾、风华正茂等词语。2正确、流利、……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网