`key1:"value1" key2:"value2"`
结构体标签由一个或多个键值对组成 。键与值使用冒号分隔,值用双引号括起来 。键值对之间使用一个空格分隔 。注意事项:为结构体编写Tag时,必须严格遵守键值对的规则 。结构体标签的解析代码的容错能力很差,一旦格式写错,编译和运行时都不会提示任何错误 , 通过反射也无法正确取值 。例如不要在key和value之间添加空格 。
例如我们为Student结构体的每个字段定义json序列化时使用的Tag:
golang中级进阶(二):结构体目录
一、结构体详解
1. 结构体定义
2. 实例化结构体的7种方法
二、结构体方法
1. 结构体的方法定义
2. 结构体内自定义方法的引用
3. 任意类型添加方法
三、嵌套、继承
1. 匿名结构体
2. 结构体中可以定义任意类型的字段
3. 结构体嵌套结构体
4. 结构体嵌套匿名结构体
5. 结构体嵌套多个匿名结构体
6. 结构体继承
四、结构体和JSON相互转换
1. 结构体转化成json
2. json转化成结构体
3. 结构体标签 tag
4. 嵌套结构体和json的序列化反序列化
Golang 中没有“类”的概念go语言结构体,Golang 中的结构体和其go语言结构体他语言中的类有点相似 。和其他面向对 象语言中的类相比,Golang 中的结构体具有更高的扩展性和灵活性 。
Golang 中的基础数据类型可以表示一些事物的基本属性,但是当我们想表达一个事物的全 部或部分属性时,这时候再用单一的基本数据类型就无法满足需求了,Golang 提供了一种 自定义数据类型,可以封装多个基本数据类型 , 这种数据类型叫结构体,英文名称 struct 。也就是我们可以通过 struct 来定义自己的类型了 。
使用 type 和 struct 关键字来定义结构体,具体代码格式如下go语言结构体:
type 类型名 struct {
字段名 字段类型
字段名 字段类型 …
}
其中:
? 类型名:表示自定义结构体的名称,在同一个包内不能重复 。
? 字段名:表示结构体字段名 。结构体中的字段名必须唯一 。
? 字段类型:表示结构体字段的具体类型 。
在 go 语言中 , 没有类的概念但是可以给类型(结构体,自定义类型)定义方法 。所谓方法 就是定义了接收者的函数 。接收者的概念就类似于其他语言中的 this 或者 self 。
方法的定义格式如下:
func (接收者变量 接收者类型) 方法名(参数列表) (返回参数) {
函数体
}
注意:想改变结构体内的值,必须先变成指针 。
在 Go 语言中,接收者的类型可以是任何类型,不仅仅是结构体 , 任何类型都可以拥有方法 。举个例子,我们基于内置的 int 类型使用 type 关键字可以定义新的自定义类型,然后为我们 的自定义类型添加方法 。
注意:匿名结构体中不允许出现多个重复的类型
注意:如果结构体里面有私有属性也就是小写定义的字段,则不会被json使用
go中的structgo和其他语言一样,可以申明新go语言结构体的“结构体”,struct可以作为其他类型的属性活字段的容器,定义方式如下go语言结构体:
type 关键字申明person为struct 类型 , person包含 name 属性和 age 属性,对应的类型为 string 和 int。我们看看如何使用struct:
除了上面使用的方式使用 struct ,还有三种方式可以使用申明struct类型
完整是使用struct 例子
当我们创建结构体时 , 字段可以只有类型,而没有字段名 。这样的字段称为匿名字段(Anonymous Field) 。习惯上匿名字段叫内嵌,具名字段叫组合
推荐阅读
- 桌面宠物游戏,桌面宠物 游戏
- 儿童药浴包如何推广,大白家儿童药浴包价格
- 关于快手游戏棋牌的信息
- vb.net的case的简单介绍
- 杭州建筑师公众号注册入口的简单介绍
- 抖音电商如何挂商品快照,抖音电商如何挂商品快照教程
- 华为nova8有必要升级鸿蒙系统嘛,华为nova8有必要升级鸿蒙系统吗
- linux的arc命令 linux ar
- 怎么安装高增益路由器,路由改装高增益天线