golang学习笔记——使用结构

news2024/9/21 0:39:48

使用结构

有时,你需要在一个结构中表示字段的集合。 例如,要编写工资核算程序时,需要使用员工数据结构。 在 Go 中,可使用结构将可能构成记录的不同字段组合在一起。

Go 中的结构也是一种数据结构,它可包含零个或多个任意类型的字段,并将它们表示为单个实体。

要声明结构,需要使用 struct 关键字,还要使用希望新的数据类型具有的字段及其类型的列表。 例如,若要定义员工结构,可使用以下代码:
在这里插入图片描述
然后,可像操作其他类型一样使用新类型声明一个变量,如下所示:

var john Employee

用 JSON 编码和解码结构

可使用结构来对 JSON 中的数据进行编码和解码。 Go 对 JSON 格式提供很好的支持,该格式已包含在标准库包中。

你还可执行一些操作,例如重命名结构中字段的名称。 例如,假设你不希望 JSON 输出显示 FirstName 而只显示 name,或者忽略空字段, 可使用如下例所示的字段标记:

在这里插入图片描述
若要将结构编码为 JSON,请使用 json.Marshal 函数。
若要将 JSON 字符串解码为数据结构,请使用 json.Unmarshal 函数。
下例将所有内容组合在一起,将员工数组编码为 JSON,并将输出解码为新的变量:

package main

import (
    "encoding/json"
    "fmt"
)

type Person struct {
    ID        int
    FirstName string `json:"name"`
    LastName  string
    Address   string `json:"address,omitempty"`
}

type Employee struct {
    Person
    ManagerID int
}

func main() {
    employees := []Employee{
        Employee{
            Person: Person{
                LastName: "Doe", FirstName: "John",
            },
        },
        Employee{
            Person: Person{
                LastName: "Campbell", FirstName: "David",
            },
        },
    }

    data, _ := json.Marshal(employees)
    fmt.Printf("%s\n", data)

    var decoded []Employee
    json.Unmarshal(data, &decoded)
    fmt.Printf("%v", decoded)
}

运行上述代码时,你会看到以下输出:

[
{"ID":0,"name":"John","LastName":"Doe","ManagerID":0},
{"ID":0,"name":"David","LastName":"Campbell","ManagerID":0}
]


[
{{0 John Doe } 0} 
{{0 David Campbell } 0}
]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1229673.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

盛元广通开放实训室管理系统2.0

开放实训室管理系统是一种基于网络和数据库的实训室信息管理系统,旨在提高实训室的管理水平,实现实训资源的优化配置和高效利用。该系统通常包括用户管理、设备管理、课程管理、考核管理等功能模块,能够实现实训室的预约、设备借用、课程安排…

一周互联网简讯 | 本周互联网发生了啥?(第3期)

1.百度T7跳槽字节3-1,总包145万,压力太大想降级 硕士毕业工作10年,一百度T7大头兵发文称,自己最近拿到字节3-1的offer,年包从现有的110万涨30%到145万。但是担心去字节后因为定的职级高需要带人,压力会很大…

2023年11月界面制作软件合集,新手也能学会!

在今天的互联网时代,有各种界面制作软件可供选择。这些软件可以帮助新手和专业人士创建精美且高效的界面设计。从最基础的拖拽操作到复杂的编程接口,不同的软件提供了一系列的功能和特性,满足了各种需求。我们将在本文中探讨8大神器&#xff…

『亚马逊云科技产品测评』活动征文|构建生态农场家禽系统

『亚马逊云科技产品测评』活动征文|构建生态农场家禽系统 授权声明:本篇文章授权活动官方亚马逊云科技文章转发、改写权,包括不限于在 Developer Centre, 知乎,自媒体平台,第三方开发者媒体等亚马逊云科技官方渠道 前…

德思特分享丨一文带你了解ADC测试参数有哪些?

来源:德思特测量测试 德思特分享丨一文带你了解ADC测试参数有哪些? 一文带你了解ADC测试参数有哪些 模数转换器(ADC)是数字电子系统中重要组成部分,用于捕获外部世界的模拟信号,如声音、图像、温度、压力…

SIMULIA|Abaqus 2022x新功能介绍第三弹

Abaqus 线性分析的功能增强 模态分析中增加connector单元的输出 模态线性动力学分析中增加下列Connector单元的输出,无需指定* connector MOTION即可实现:AXIAL,BUSHING,CARDAN,CARTESIAN和ROTATION。 而且改进了CT…

高防CDN有什么作用?

分布式拒绝服务攻击(DDoS攻击)是一种针对目标系统的恶意网络攻击行为,DDoS攻击经常会导致被攻击者的业务无法正常访问,也就是所谓的拒绝服务。 常见的DDoS攻击包括以下几类: 网络层攻击:比较典型的攻击类…

python中,axis=0,axis=1,axis=2的理解【对于按待定轴求和,axis=‘x’的理解】

一、axis 1.假设我们有一个5行4列的矩阵,见下图所示。 这个矩阵的shape:[5][4],维度是2,axis:0,1,按照行,轴为0,按照列轴为1。 当我们按照axis0,求sum时:我们得到的shap…

网站被攻击怎么办?

网站被大流量攻击会造成服务器资源耗尽,一直到宕机崩溃,网站无法访问甚至被机房停用,时间长就导致网站排名下降,所以必需及时处理。下面跟大家分享服务器被大流量攻击怎么办?服务器攻击防护如何做? 一、服…

win10无损升级到win11

win10无损升级到win11,保留文件和程序。下面就是升级方法。 1,下载win11升级助手 https://download.microsoft.com/download/5/4/c/54c22b82-d0cd-4e34-9a06-b75823a8aede/Windows11InstallationAssistant.exe 2,启动助手开始安装 安装时需…

dgl的cuda版本安装+对应torch的cuda版本安装

优秀教程 1、pytorch 1.8.1 CUDA11.1 对应的DGL版本是0.6.1(linux、windows也适用) 2、CUDApytorchDGL安装 3、安装dgl-cuda 4、torch 安装备忘录 dgl文件下载 https://anaconda.org/dglteam/repo可以将下面网址中的cu111改成你想要的版本&#xff0…

Zookeeper中的Watch机制的原理?

前言 Zookeeper是一个分布式协调组件,为分布式架构下的多个应用组件提供了顺序访问控制能力。它的数据存储采用了类似于文件系统的树形结构,以节点的方式来管理存储在Zookeeper上的数据 Zookeeper提供了一个Watch机制,可以让客户端感知到Zook…

来聊聊阿里1688 /拼多多API接口接入| 让需求回到产品端

昨儿办公室讨论起了1688。 对,就是阿里搞批发的那个网站。 在上面,你可以买到各种各样价格低廉的产品,比如,办公用具、女孩子的皮筋、小孩子的玩具等等。 在小批量上,它和拼多多定价类似,但二者的赛道却不同…

PDF控件Spire.PDF for .NET【转换】演示:自定义宽度、高度将 PDF 转 SVG

我们在上一篇文章中演示了如何将 PDF 页面转换为 SVG 文件格式。本指南向您展示如何使用最新版本的 Spire.PDF 以及 C# 和 VB.NET 指定输出文件的宽度和高度。 Spire.Doc 是一款专门对 Word 文档进行操作的 类库。在于帮助开发人员无需安装 Microsoft Word情况下,轻…

【Mysql】基于MySQL协议的抓包工具

mysql_sniffer 是一个基于 MySQL 协议的抓包工具,用来实时抓取 MySQL 服务端的请求,并格式化输出,输出内容包括访问时间、来源 IP、执行的SQL语句。 在进行MySQL 8.0升级时,了解新版本对SQL语法的改变和新增的功能是非常重要的。通…

解锁安全与信任的双重礼遇!JoySSL证书买二送一,买三送二

JoySSL是业内领先的SSL证书提供商,致力于为网站提供最高水平的安全性。通过使用JoySSL证书,您的网站将获得强大的加密保护,确保用户的敏感信息在传输过程中得到安全加密,有效地抵御各种网络威胁。 为何选择JoySSL证书&#xff1f…

SBPL 打印机上传图片

A计算图片大小 选择图片》打开方式》画图 选择“主页”》重新调整大小 选择“像素” 图片大小计算公式 原图像素/打印机像素(每毫米几个点)*要求图片的大小(mm) 例:使用SR224R打印这个logo,大小要求为5m…

C语言模拟实现Liunx操作系统与用户之间的桥梁shell(代码详解)

什么是shell? Shell(壳)是指命令行界面(CLI)或脚本语言,它为用户提供了与操作系统交互的方式。它是一个程序,从用户那里接收命令,并通过与操作系统内核交互来执行这些命令。Shell充当…

buildadmin+tp8表格操作(6)表格行中添加详情按钮并弹出对话框

在表格行中添加按钮, 是个基本操作 下面来看一下,dialog的 对话框中是怎么拿到数据的 有了这一行, 那么 它的子组件中, 都可以获取到这个对象,所以, 有弹出框的 Info 组件,也可以获取到 我们…

“智能与未来”2024世亚国际智能机器人展会(简称:世亚智博会)

随着科技的不断发展,智能机器人已经成为了当今社会的热门话题。无论是工业生产、医疗护理、家庭服务等领域,智能机器人都发挥着越来越重要的作用。而世亚智博会作为智能机器人领域的专业展会之一,旨在为全球的智能机器人产业提供一个展示、交…