golang 结构体struct、数组、结构体数组 定义与赋值 、json string转struct

2024-09-04 07:08

本文主要是介绍golang 结构体struct、数组、结构体数组 定义与赋值 、json string转struct,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 1.结构体struct
    • 1.1 声明结构体
    • 1.2 初始化结构体 以及 传参
  • 2. 结构体数组、append
  • 3. 接口返回 含数组的结构体 常用写法
    • json string转struct

1.结构体struct

看这个文章,看一个struct

1.1 声明结构体

// student
type Student struct {Name stringAge  uint64
}// class
type Class struct {ClassNo       uint64ClassName     stringStudents      []Student //数组IsHonor       bool
}

1.2 初始化结构体 以及 传参

    // 初始化结构体的方法一:class := Class{ClassNo:  302ClassName:	"三年级二班",Students:    students, // students变量IsHonor:    false,}key, err := t.Get(class) //普通func (s *SService) Get(class Class){  //普通}// 初始化结构体的方法二: 取地址class := &Class{ClassNo:  302ClassName:	"三年级二班",Students:    students, // students变量IsHonor:    false,}key, err := t.Get(class) // 传的是个”地址“func (s *SService) Get(class *Class){ // 用”指针“接} // 初始化结构体的方法三:class := Class{}class.ClassNo = 302class.ClassName = "三年级二班"class.Students = studentsclass.IsHonor = false

2. 结构体数组、append

	var classOne Classvar classList []Classfor ....:取到值先赋给classOne,再用classList = append(classList, classOne)

3. 接口返回 含数组的结构体 常用写法

type RespData struct {Name  string `json:"name"`Age uint64 `json:"age"`
}type JiekouResponse struct { List []RespData `json:"list"` 
}func (t *TController) SuggestGet(){res := &JiekouResponse{}res.List = []RespData{} // 定义数组s := service.NewTService(t.param)allData := s.GetAllData()var dataOne RespDatafor _, data := range allData { // 循环赋值dataOne.Name = data.NamedataOne.Age = data.Ageres.List = append(res.List, dataOne) // 数组append给值}
}

json string转struct

type UserInfo struct {ParentNodeId  int64  `json:"parent_node_id"`NodeTypeId    uint32 `json:"node_type_id"`DimeNodeValue string `json:"dime_node_value"`CnName        string `json:"cn_name"`EnName        string `json:en_name"`
}// 解析userInfolist:从json string到structuserinfoStr := req.Userinfolist // req.Userinfolist是个list,list里是非常多的json string [{"a":1,"b":2,"c":"3"},{},...]var userInfolist []*UserInfoif userinfoStr != "" {err := json.Unmarshal([]byte(userinfoStr), &userInfolist)fmt.Println("userInfolist:", userInfolist)fmt.Println(userInfolist[0].DimeNodeValue)if err != nil {return res, err}}

其他文章参考:golang结构体-对象和指针-函数赋予

这篇关于golang 结构体struct、数组、结构体数组 定义与赋值 、json string转struct的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1135335

相关文章

Vite 打包目录结构自定义配置小结

《Vite打包目录结构自定义配置小结》在Vite工程开发中,默认打包后的dist目录资源常集中在asset目录下,不利于资源管理,本文基于Rollup配置原理,本文就来介绍一下通过Vite配置自定义... 目录一、实现原理二、具体配置步骤1. 基础配置文件2. 配置说明(1)js 资源分离(2)非 JS 资

MyBatis-plus处理存储json数据过程

《MyBatis-plus处理存储json数据过程》文章介绍MyBatis-Plus3.4.21处理对象与集合的差异:对象可用内置Handler配合autoResultMap,集合需自定义处理器继承F... 目录1、如果是对象2、如果需要转换的是List集合总结对象和集合分两种情况处理,目前我用的MP的版本

JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法

《JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法》:本文主要介绍JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法,每种方法结合实例代码给大家介绍的非常... 目录引言:为什么"相等"判断如此重要?方法1:使用some()+includes()(适合小数组)方法2

C#下Newtonsoft.Json的具体使用

《C#下Newtonsoft.Json的具体使用》Newtonsoft.Json是一个非常流行的C#JSON序列化和反序列化库,它可以方便地将C#对象转换为JSON格式,或者将JSON数据解析为C#对... 目录安装 Newtonsoft.json基本用法1. 序列化 C# 对象为 JSON2. 反序列化

Python中Json和其他类型相互转换的实现示例

《Python中Json和其他类型相互转换的实现示例》本文介绍了在Python中使用json模块实现json数据与dict、object之间的高效转换,包括loads(),load(),dumps()... 项目中经常会用到json格式转为object对象、dict字典格式等。在此做个记录,方便后续用到该方

GSON框架下将百度天气JSON数据转JavaBean

《GSON框架下将百度天气JSON数据转JavaBean》这篇文章主要为大家详细介绍了如何在GSON框架下实现将百度天气JSON数据转JavaBean,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录前言一、百度天气jsON1、请求参数2、返回参数3、属性映射二、GSON属性映射实战1、类对象映

C++ STL-string类底层实现过程

《C++STL-string类底层实现过程》本文实现了一个简易的string类,涵盖动态数组存储、深拷贝机制、迭代器支持、容量调整、字符串修改、运算符重载等功能,模拟标准string核心特性,重点强... 目录实现框架一、默认成员函数1.默认构造函数2.构造函数3.拷贝构造函数(重点)4.赋值运算符重载函数

redis数据结构之String详解

《redis数据结构之String详解》Redis以String为基础类型,因C字符串效率低、非二进制安全等问题,采用SDS动态字符串实现高效存储,通过RedisObject封装,支持多种编码方式(如... 目录一、为什么Redis选String作为基础类型?二、SDS底层数据结构三、RedisObject

Java集合中的链表与结构详解

《Java集合中的链表与结构详解》链表是一种物理存储结构上非连续的存储结构,数据元素的逻辑顺序的通过链表中的引用链接次序实现,文章对比ArrayList与LinkedList的结构差异,详细讲解了链表... 目录一、链表概念与结构二、当向单链表的实现2.1 准备工作2.2 初始化链表2.3 打印数据、链表长

创建springBoot模块没有目录结构的解决方案

《创建springBoot模块没有目录结构的解决方案》2023版IntelliJIDEA创建模块时可能出现目录结构识别错误,导致文件显示异常,解决方法为选择模块后点击确认,重新校准项目结构设置,确保源... 目录创建spChina编程ringBoot模块没有目录结构解决方案总结创建springBoot模块没有目录