首页 > 其他分享 >golang 结构体

golang 结构体

时间:2023-01-16 18:14:39浏览次数:35  
标签:Name Students Gender fmt Id golang class 结构

结构体与JSON序列化

  JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。JSON键值对是用来保存JS对象的一种方式,键/值对组合中的键名写在前面并用双引号""包裹,使用冒号:分隔,然后紧接着值;多个键值之间使用英文,分隔。

package main

import (
    "encoding/json"
    "fmt"
)

type Student struct {
    Id     int
    Gender string
    Name   string
}

type Class struct {
    Title    string
    Students []*Student
}

func main() {
    c := &Class{
        Title:    "101",
        Students: make([]*Student, 0, 200),
    }

    for i := 0; i < 10; i++ {
        stu := &Student{
            Id:     i,
            Gender: "男",
            Name:   fmt.Sprintf("stu%02d", i),
        }
        c.Students = append(c.Students, stu)
    }
    fmt.Printf("c: %v\n", c)

    data, err := json.Marshal(c)
    if err != nil {
        fmt.Println("json marsharl failed")
        return
    }

    fmt.Printf("json:%s\n", data)
    var class Class
    _ = json.Unmarshal(data, &class)
    fmt.Printf("class: %v\n", class)
    fmt.Printf("class.Students: %v\n", *(class.Students)[0])     //{0 男 stu00}
    fmt.Printf("class.Students: %v\n", class.Students[0])        //&{0 男 stu00}
    fmt.Printf("class.Students: %v\n", class.Students[0].Name)   //stu00
    fmt.Printf("class.Students: %v\n", class.Students[0].Gender) //男
    fmt.Printf("class.Students: %v\n", class.Students[0].Id)     //0
}

 结果如下:

c: &{101 [0xc0000764b0 0xc0000764e0 0xc000076510 0xc000076540 0xc000076570 0xc0000765a0 0xc0000765d0 0xc000076600 0xc000076630 0xc000076660]}
json:{"Title":"101","Students":[{"Id":0,"Gender":"男","Name":"stu00"},{"Id":1,"Gender":"男","Name":"stu01"},{"Id":2,"Gender":"男","Name":"stu02"},{"Id":3,"Gender":"男","Name":"stu03"},{"Id":4,"Gender":"男","Name":"stu04"},{"Id":5,"Gender":"男","Name":"stu05"},{"Id":6,"Gender":"男","Name":"stu06"},{"Id":7,"Gender":"男","Name":"stu07"},{"Id":8,"Gender":"男","Name":"stu08"},{"Id":9,"Gender":"男","Name":"stu09"}]}
class: {101 [0xc0000769f0 0xc000076a20 0xc000076a50 0xc000076a80 0xc000076ae0 0xc000076b10 0xc000076b40 0xc000076b70 0xc000076ba0 0xc000076bd0]}
class.Students: {0 男 stu00}
class.Students: &{0 男 stu00}
class.Students: stu00
class.Students: 男
class.Students: 0

 

标签:Name,Students,Gender,fmt,Id,golang,class,结构
From: https://www.cnblogs.com/wushaoyu/p/17056047.html

相关文章

  • (转)Golang中自动“取引用”和“解引用”对原值的影响
    原文:https://blog.csdn.net/u014633283/article/details/839020201.写在前面我们知道Golang在调用方法时,会自动对实参进行“取引用”或“解引用”操作。我们在前面的博客......
  • 利用蒙特卡洛模拟对结构化产品-鲨鱼鳍期权进行定价
    本文主要Matlab代码:产品通过蒙特卡洛模拟进行定价:SFProduct=50000;part_rate=1.25;S0=6525.80;指数价格barrier_r=1.08;利率barrier_price=S......
  • 【ES6】JS的Set和Map数据结构
    【ES6】JS的Set和Map数据结构​​一、Set​​​​1、基本用法​​​​2、4种操作方法​​​​3、4种遍历方法​​​​4、Set的应用​​​​1)Set转化为数组​​​​2)去除数组......
  • golang map的定义与使用
    Mapmap是一堆键值对的未排序集合,比如以身份证号作为唯一键来标识一个人的信息。map是引用类型,键必须支持相等运算符(==,!=)类型,比如:int,string,float等内建类型,只含......
  • C/C++数据结构题目[2023-01-16]
    C/C++数据结构题目[2023-01-16]以下内容二选一题目1:校园导航系统的设计与实现问题描述:校园导航系统能够提供校园内场所信息和路径查询。以传媒大学校园为例,校园内包......
  • golang 的fmt 包实现了格式化I/O函数,类似于C的 printf 和 scanf。
      #定义示例类型和变量typeHumanstruct{Namestring}varpeople=Human{Name:"zhangsan"} 普通占位符占位符说明......
  • React Tree树形结构封装工具类
    需要依赖 immutable,用于groupby分组buildTree为入口方法,注意返回的是Immutable.List对象,使用需要调用.toJS()方法转为普通对象其中 creatNode方法为构建节点对象,可根......
  • 跳跃表数据结构与算法分析
    作者:京东物流纪卓志目前市面上充斥着大量关于跳跃表结构与Redis的源码解析,但是经过长期观察后发现大都只是在停留在代码的表面,而没有系统性地介绍跳跃表的由来以及各种常量......
  • golang切片
    切片切片并不是数组或者数组指针,切片只是对数组中连续片断的引用,这个片断可以是整个数组,也可以是由起始索引和终止索引标识的数组,所以切片是一个引用类型。//切......
  • Mysql备份数据库结构和数据的脚本
    echo取日期、时间变量值setyy=%date:~0,4%setmm=%date:~5,2%setdd=%date:~8,2%if/i%time:~0,2%lss10sethh=0%time:~1,1%if/i%time:~0,2%geq10set......