go程序struct omitempty妙用

简介: 记录struct与json转换omitempty的妙用

直接看代码

packagemainimport (
"encoding/json""fmt""gopkg.in/yaml.v2")
typeNamestruct {
Ageint`json:"age,omitempty" yaml:"age,omitempty"`Addressstring`json:"address,omitempty" yaml:"address,omitempty"`Emailstring`json:"email" yaml:"email"`}
funcmain() {
p :=Name{}
p.Age=1b, err :=json.Marshal(p)
iferr!=nil {
fmt.Println(err)
    }
fmt.Println(string(b))
m, err :=yaml.Marshal(p)
iferr!=nil {
fmt.Println(err)
    }
fmt.Println(m)
}


运行结果

{"age":1,"email":""}
age: 1
email: ""

可以看到,用了 omitempty ,如果字段没有值,就不会出现在json或yaml当中

目录
相关文章
|
20天前
|
存储 Go C语言
如何用Go开发eBPF程序
【2月更文挑战第7天】
|
20天前
|
安全 Go
Go语言并发:释放程序潜能的魔力
Go语言并发:释放程序潜能的魔力
29 0
|
7天前
|
Java 测试技术 Go
使用go的内置运行时库调试和优化程序
【5月更文挑战第18天】在本文中,作者探讨了如何为运行时程序添加剖析支持以优化性能。他们面临的问题是一个程序需要找出平方根为整数且逆序平方等于其逆序的数字。他们首先展示了原始代码,然后使用`runtime`库进行优化,将计算和调用功能分离,同时记录CPU和内存使用情况。
22 4
|
11天前
|
Go
第一个 Go 程序
第一个 Go 程序
19 2
|
20天前
|
存储 Java Linux
聊聊Go程序是如何运行的
本文作者 **sharkChili** 是一名 Java 和 Go 语言开发者,同时也是 CSDN 博客专家和 JavaGuide 维护者。文章探讨了 Go 语言的执行过程,从汇编角度出发,解释了如何从 `main.go` 文件开始,经过入口跳转、参数拷贝、启动协程、运行 `g0` 的 `main` 方法等步骤,最终执行到用户定义的 `main` 函数。文章还展示了相关汇编代码片段,并提供了运行时检查、系统初始化和调度器初始化的细节。结尾提到,有兴趣的读者可以加入作者创建的交流群进行深入讨论。
16 0
|
20天前
|
运维 Serverless Go
Serverless 应用引擎产品使用之在阿里云函数计算中,Go语言的函数计算服务Go程序没有正确打包如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
20天前
|
Unix Linux Go
Golang深入浅出之-信号(Signals)处理与优雅退出Go程序
【4月更文挑战第25天】Go语言中的信号处理关乎程序对外部事件的响应,尤其是优雅地终止进程。本文介绍了信号基础,如SIGINT、SIGTERM等常见信号,以及处理流程:注册处理器、等待信号、执行清理和优雅退出。强调了三个易错点及避免方法,并提供实战代码示例展示如何监听和响应信号。信号处理应简洁高效,确保程序健壮性和用户体验。
26 0
|
20天前
|
Go
Golang深入浅出之-信号(Signals)处理与优雅退出Go程序
【4月更文挑战第23天】在Go语言中,使用`os/signal`包处理信号对实现程序优雅退出和响应中断至关重要。本文介绍了如何注册信号处理器、处理常见问题和错误,以及提供代码示例。常见问题包括未捕获关键信号、信号处理不当导致程序崩溃和忽略清理逻辑。解决方案包括注册信号处理器(如`SIGINT`、`SIGTERM`)、保持信号处理器简洁和执行清理逻辑。理解并正确应用这些原则能增强Go程序的健壮性和可管理性。
30 1
|
20天前
|
Go 开发者
Golang深入浅出之-Go语言结构体(struct)入门:定义与使用
【4月更文挑战第22天】Go语言中的结构体是构建复杂数据类型的关键,允许组合多种字段。本文探讨了结构体定义、使用及常见问题。结构体定义如`type Person struct { Name string; Age int; Address Address }`。问题包括未初始化字段的默认值、比较含不可比较字段的结构体以及嵌入结构体字段重名。避免方法包括初始化结构体、自定义比较逻辑和使用明确字段选择器。结构体方法、指针接收者和匿名字段嵌入提供了灵活性。理解这些问题和解决策略能提升Go语言编程的效率和代码质量。
33 1
|
20天前
|
程序员 Go 数据中心
掌握Go语言:探索Go语言中的代码块和作用域,增强程序灵活性与可维护性(5)
掌握Go语言:探索Go语言中的代码块和作用域,增强程序灵活性与可维护性(5)