概述

结构体是将零个或多个任意类型的变量,组合在一起的聚合数据类型,也可以看做是数据的集合。

声明结构体

  1. //demo_11.go
  2. package main
  3. import (
  4. "fmt"
  5. )
  6. type Person struct {
  7. Name string
  8. Age int
  9. }
  10. func main() {
  11. var p1 Person
  12. p1.Name = "Tom"
  13. p1.Age = 30
  14. fmt.Println("p1 =", p1)
  15. var p2 = Person{Name:"Burke", Age:31}
  16. fmt.Println("p2 =", p2)
  17. p3 := Person{Name:"Aaron", Age:32}
  18. fmt.Println("p2 =", p3)
  19. //匿名结构体
  20. p4 := struct {
  21. Name string
  22. Age int
  23. } {Name:"匿名", Age:33}
  24. fmt.Println("p4 =", p4)
  25. }

运行结果:

生成 JSON

  1. //demo_12.go
  2. package main
  3. import (
  4. "encoding/json"
  5. "fmt"
  6. )
  7. type Result struct {
  8. Code int `json:"code"`
  9. Message string `json:"msg"`
  10. }
  11. func main() {
  12. var res Result
  13. res.Code = 200
  14. res.Message = "success"
  15. //序列化
  16. jsons, errs := json.Marshal(res)
  17. if errs != nil {
  18. fmt.Println("json marshal error:", errs)
  19. }
  20. fmt.Println("json data :", string(jsons))
  21. //反序列化
  22. var res2 Result
  23. errs = json.Unmarshal(jsons, &res2)
  24. if errs != nil {
  25. fmt.Println("json unmarshal error:", errs)
  26. }
  27. fmt.Println("res2 :", res2)
  28. }

运行结果:

改变数据

  1. //demo_13.go
  2. package main
  3. import (
  4. "encoding/json"
  5. "fmt"
  6. )
  7. type Result struct {
  8. Code int `json:"code"`
  9. Message string `json:"msg"`
  10. }
  11. func main() {
  12. var res Result
  13. res.Code = 200
  14. res.Message = "success"
  15. toJson(&res)
  16. setData(&res)
  17. toJson(&res)
  18. }
  19. func setData (res *Result) {
  20. res.Code = 500
  21. res.Message = "fail"
  22. }
  23. func toJson (res *Result) {
  24. jsons, errs := json.Marshal(res)
  25. if errs != nil {
  26. fmt.Println("json marshal error:", errs)
  27. }
  28. fmt.Println("json data :", string(jsons))
  29. }

运行结果:

推荐阅读

本文欢迎转发,转发请注明作者和出处,谢谢!

Go - Struct 结构体的更多相关文章

  1. C# Struct结构体里数组长度的指定

    typedef struct Point{ unsigned short x; unsigned short y; }mPoint;//点坐标 typedef struct Line{ mPoint ...

  2. C#基础--struct(结构体)

    结构体和类有点类似    我们定义一个类的时候    是class   类名   定义结构体的时候是 struct   结构体名 结构体的写法 struct Point { // public int ...

  3. 1.0 基础、标示符、常量、数据类型(enum 枚举,struct 结构体)、操作符、循环、数组

    一.程序 现实生活中,程序是指完成某些事务的一种既定方法和过程,可以把程序看成是一系列动作执行过程的描述. 在计算机世界,程序是指令,即为了让计算机执行某些操作或解决某个问题而编写的一系列有序指令的集 ...

  4. C#语言struct结构体适用场景和注意事项

    在C#语言中struct结构体和class之间的区别主要是值类型和引用类型的区别,但实际上如果使用不当是非常要命的.从Win32时代过来的人对于struct一点不感觉陌生,但是却反而忽略了一些基本问题 ...

  5. C语言 Struct 结构体在 Java 中的体现

    大一整个学期完成了 C 语言的学习,大二就进入了Java 的学习. 和C语言一样,我们都会尝试写一个小小的学生管理系统什么的,学习过 C 语言同学知道,在管理系统中 Struct 结构体是个很好用的东 ...

  6. Swift Struct 结构体

    前言 Swift 语言有两种基本的数据类型,即类(class)和结构体(struct),class 这样的概念大家不会陌生,而 struct 也并不是什么新的概念,在 Objective-C 和 C ...

  7. go struct结构体

    struct结构体 用来自定义复杂数据结构 struct里面可以包含多个字段(属性),字段可以是任意类型 struct类型可以定义方法,注意和函数的区分 struct类型是值类型 struct类型可以 ...

  8. struct 结构体解析(原)

    (一)基本概念 结构体是一个或是多个变量的集合,这些变量可能为不同的类型,为了处理的方便而将这些变量组合在一个名字之下.我们将关键字struct引入了结构声明中.结构声明包含在花括号内的一系列声明组成 ...

  9. struct结构体在c和c++中的差别

    非常多次遇到这个struct的问题,今天在这里简单总结一下我的理解 一.struct在C 中的使用 1.单独使用struct定义结构体类型 struct Student { int id; int n ...

随机推荐

  1. C#代码实现矢量画图

    原文:C#代码实现矢量画图 版权声明:本文为博主原创文章,转载请附上链接地址. https://blog.csdn.net/ld15102891672/article/details/80275969 ...

  2. matlab 二元函数的画法

    plot:画线(curve,二维空间以及三维空间) surf:画面(surface,一般在三维空间) 1. surf 绘图函数 surf 是 surface 的缩写,表示表面(显然至少三维图像才会有表 ...

  3. Feature extraction - sklearn文本特征提取

    http://blog.csdn.net/pipisorry/article/details/41957763 文本特征提取 词袋(Bag of Words)表征 文本分析是机器学习算法的主要应用领域 ...

  4. Java数组List换算方法

    1.List转换到一个数组.(这里List它是实体是ArrayList) 调用ArrayList的toArray方法. toArray public <T> T[] toArray(T[] ...

  5. 潜移默化学会WPF(转载篇)--屏幕显示Label,鼠标移上去变成textBox

    原文:潜移默化学会WPF(转载篇)--屏幕显示Label,鼠标移上去变成textBox <Window x:Class="WpfApplication1.Window1" x ...

  6. VS中发布并调试IIS程序(非附加进程!!!)

    筒子们,你们不觉得发布到IIS再附加进程太烦了么???看了看网上全是这种方法,这不科学!VS已经提供了更好的方式了,少年们! 流程 1.打开你的IIS,创建一个站点示例中,我创建了一个端口号为5002 ...

  7. AngularJS 计时器

    <div ng-controller="MyController"> <!--显示$scope.clock的now属性--> <h1>hello ...

  8. WPF 代码实现动画

    <Window x:Class="wpf180709.Window2"        xmlns="http://schemas.microsoft.com/win ...

  9. QT 窗体控件的透明度设置(三种方法)

    整个窗体 当设置QT的窗体(QMainWindow, QDialog)时,直接用 targetForm->setWindowOpacity()   函数即可实现,效果为窗体及窗体内所有控件都透明 ...

  10. uwp 获取系统字体库

    原文:uwp 获取系统字体库 效果图: 要获取到字体库首先要在 NuGet 添加 SharpDx.Direct2D1  api: /// <summary> /// 获取系统字体库列表 / ...