Golang 中, struct 主要用于用户自定义类型例如:

// Address .. 详细地址
type Address struct {Country stringState   stringCity    stringStreet  string
}// Profile ... 用户资料
type Profile struct {Name    stringGender  stringAddress Address
}// Account ... 账户信息
type Account struct {ID      stringProfile Profile
}

上面三个 struct 定义了一个账户的数据结构:

Account -> Profile -> Address

如果这组定义的数据结构只是为了解析一个从 API 获取的数据, 并方便使用, 例如:

data =[]byte(`
{"id": "c455213a-1afc-11ea-a02f-5381a57c8a28","profile": {"name": "娜美","gender": "lady","address":{"country": "jp","State": ""}}
}
`)

那定义上面这样一组数据会显得多余, 例如 Address 和 Profile 对象可能并没有直接使用的场景. 如果用 map[string]interface{} 这样的数据结构来解析以上数据, 在使用的时候, 为了安全, 需要频繁地将 interface{} 数值转换成需要的具体类型, 这过程中每一步都伴随着错误处理.

如果使用匿名 struct 来定义这组数据结构, 则可以将以上定义精简为:

// Account ... 账户信息
type Account struct {ID      stringProfile struct {Name    stringGender  stringAddress struct {Country stringState   stringCity    stringStreet  string}}
}var account Account
if err := json.Unmarshal(data, &account); err != nil {log.Fatal(err)
}

这样我们就得到了一个非常紧凑的 Account 数据结构的定义, 同时也能像常规定义的数据类型一样方便地引用层次较深的数据, 例如:

street := account.Profile.Address.Street

关于 Struct 的使用, Golang 还提供了 Struct Composition 来弥补 Golang 处理“继承”相关的逻辑的问题.

golang 将对象转换成string_Golang 匿名 struct 解码数据技巧相关推荐

  1. C# 将对象转换成字节数组(二进制数据)

    在将自定义对象或者数组等这样的数据存储到数据库时往往需要转换成二进制字节,尤其是在一些O/RM数据库框架中,下面是转换的函数,一个是将对象转换成二进制字节数组,另一个是将从数据库中读取的二进制流转换成 ...

  2. 将Model对象转换成json文本或者json二进制文件

    将Model对象转换成json文本或者json二进制文件 https://github.com/casatwy/AnyJson 注意:经过测试,不能够直接处理字典或者数组 主要源码的注释 AJTran ...

  3. Flex4将对象转换成json串

    使用json需要先引入as3corelib.swc 1.将对象转换成json串 var obj:Object = new Object(); obj.filename = "1.jpg&qu ...

  4. json字符串转换成json对象,json对象转换成字符串,值转换成字符串,字符串转成值...

    json字符串转换成json对象,json对象转换成字符串,值转换成字符串,字符串转成值 原文:json字符串转换成json对象,json对象转换成字符串,值转换成字符串,字符串转成值 主要内容: 一 ...

  5. android XMl 解析神奇xstream 五: 把复杂对象转换成 xml ,并写入SD卡中的xml文件

    前言:对xstream不理解的请看: android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 android XMl 解析神奇xs ...

  6. 把对象转换成JSON字符串 第二稿支持移动设备

    /*** 导入jackson包 把对象转换成JSON字符串 第二稿 支持移动设备* @param pn* @param request* @return*/@RequestMapping(value ...

  7. Java对象转换成JSON对象/JSON对象转换成JSON字符串/JSON字符串转换成JS对象

    文章目录 后端部分 前端部分 后端部分 Option op = new Option("海淀","hd");//java对象转换json对象 JSONObjec ...

  8. doctrine find的对象转换成数组_「ES6基础」Array数组的新方法(上)

    在日常工作中我们经常会与数组打交道,因此需要熟练掌握数组操作的相关方法,ES6中关于数组的操作,又给我们带来了哪些惊喜呢,Array数组操作又添加了哪些新方法? 本篇文章将从以下几个方面进行介绍: A ...

  9. php7对象转换成数组,php 如何把对象转换成数组对象

    php把对象转换成数组对象的方法:首先打开相应的PHP代码文件:然后通过"function array_to_object($arr){...}"方法把对象转换成数组即可. 本文操 ...

最新文章

  1. python 单元测试_聊聊 Python 的单元测试框架(一):unittest
  2. adminlte+layui框架搭建3 - layui弹出层
  3. c++中#include“stdafx.h”
  4. MATLAB 成绩排序
  5. php动态引入js文件路径问题,JavaScript_动态加载外部css或js文件,原理解析:第一步:使用dom创 - phpStudy...
  6. C~K要找女朋友了!!!_JAVA
  7. 几位阿里朋友重写的Java并发编程,牛逼了
  8. PortAudio(v19) 在vs2010上的环境搭建
  9. POJ1742Coins
  10. 01_kubernetes初始化系统和全局变量
  11. 编写QT代码实现与FlightGear通信
  12. AD快捷键还原为默认配置
  13. chardet使用方法
  14. python 手机号码归属 ip地址查询
  15. 【2022 网鼎杯】青龙组 crypto WriteUp
  16. 交并比 (IoU), mAP (mean Average Precision), 非极大值抑制 (NMS, Soft NMS, Softer NMS, IoU-Net)
  17. 红帽第四季度订阅的强劲增长 整体表现超预期
  18. 大场景三维点云语义分割模型
  19. NNDL 作业6:基于CNN的XO识别
  20. 百度文库里面的文档无法复制,如果要下载需要下载券,如何免费复制文档呢?

热门文章

  1. 员工发布“宏颜获水”广告引争议 苏宁回应:系个人行为
  2. 一代上网人的记忆!百度浏览器将不再更新
  3. 苹果面临5G困境!向三星采购碰壁 高通表态:苹果有我们电话
  4. java查错题(经常混淆)
  5. go的优势--链表与结构体使用
  6. MySQL8 Zip的下载和安装
  7. Eclipse项目上传码云、从码云上检出项目、修改检出项目后在提交到码云、看此篇即可
  8. html的div块float后宽度无效,行内元素(例如)设置float之后才能用width调整宽度...
  9. 【Elasticsearch】明明存在,怎么搜索不出来呢?
  10. 【clickhouse】clickhouse源码 Distributed之表select流程