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当中

目录
相关文章
|
13天前
|
程序员 Go
go语言中结构体(Struct)
go语言中结构体(Struct)
89 71
|
24天前
|
Go 数据处理 开发者
Go 语言的反射机制允许程序在运行时动态检查和操作类型信息,提供极大的灵活性和扩展性
Go 语言的反射机制允许程序在运行时动态检查和操作类型信息,提供极大的灵活性和扩展性。本文探讨了反射的基本原理、主要操作、应用场景及注意事项,并通过实例展示了反射的实际应用,帮助开发者更好地理解和使用这一强大特性。
29 2
|
3月前
|
Kubernetes Go 持续交付
一个基于Go程序的持续集成/持续部署(CI/CD)
本教程通过一个简单的Go程序示例,展示了如何使用GitHub Actions实现从代码提交到Kubernetes部署的CI/CD流程。首先创建并版本控制Go项目,接着编写Dockerfile构建镜像,再配置CI/CD流程自动化构建、推送Docker镜像及部署应用。此流程基于GitHub仓库,适用于快速迭代开发。
70 3
|
3月前
|
Kubernetes 持续交付 Go
创建一个基于Go程序的持续集成/持续部署(CI/CD)流水线
创建一个基于Go程序的持续集成/持续部署(CI/CD)流水线
|
3月前
|
IDE Go 数据处理
Go to Learn Go之第一个Go程序
Go to Learn Go之第一个Go程序
28 0
|
3月前
|
存储 Go
Go: struct 结构体类型和指针【学习笔记记录】
本文是Go语言中struct结构体类型和指针的学习笔记,包括结构体的定义、成员访问、使用匿名字段,以及指针变量的声明使用、指针数组定义使用和函数传参修改值的方法。
|
4月前
|
JSON 编译器 Go
Go struct
该文章详细讨论了Go语言中的结构体,包括结构体的字面形式、内存对齐和填充、字段标签的使用、结构体值的赋值和可寻址性、组合字面量的取地址特性、通过指针访问结构体字段的隐式解引用,以及结构体值的比较和类型转换。
21 3
|
4月前
|
Linux Shell Go
如何构建和安装 Go 程序
如何构建和安装 Go 程序
53 1
|
4月前
|
Go
在Go中如何停止程序
在Go中如何停止程序
|
4月前
|
存储 缓存 安全