这样的字段称为匿名字段(Anonymous Field)。习惯上匿名字段叫内嵌,具名字段叫组合 代码语言:javascript 复制 type Person struct{name string age int}type Student struct{Person// 匿名字段,那么默认Person就包含了Student的所有字段weight int int// 内置类型作为匿名字段} 上面我们申明了两个结构体Student和Person,其...
在Go语言中,结构体(struct)是一种复合数据类型,允许将零个或多个任意类型的字段组合在一起。结构体在Go中非常常用,因为它们提供了一种将相关数据组织在一起的方法,使得代码更加模块化和易于管理。 2. 介绍结构体中的匿名字段概念 匿名字段是Go结构体中一个特殊的概念,它允许一个结构体嵌入另一个结构体(或接口...
从上面例子我们看出来struct不仅仅能够将struct作为匿名字段、自定义类型、内置类型都可以作为匿名字段,而且可以在相应的字段上面进行函数操作(如例子中的append)。 这里有一个问题:如果human里面有一个字段叫做phone,而student也有一个字段叫做phone,那么该怎么办呢? Go里面很简单的解决了这个问题,最外层的优先访问,也就...
从上面例子我们看出来struct不仅仅能够将struct作为匿名字段、自定义类型、内置类型都可以作为匿名字段,而且可以在相应的字段上面进行函数操作(如例子中的append)。 这里有一个问题:如果human里面有一个字段叫做phone,而student也有一个字段叫做phone,那么该怎么办呢? Go里面很简单的解决了这个问题,最外层的优先访问,也就...
我们上面介绍了如何定义一个struct,定义的时候是字段名与其类型一一对应,实际上Go支持只提供类型,而不写字段名的方式,也就是匿名字段,也称为嵌入字段。 当匿名字段是一个struct的时候,那么这个struct所拥有的全部字段都被隐式地引入了当前定义的这个struct。
今天主要记录匿名结构体和匿名字段,结构体嵌套,模拟继承性。 一.匿名结构体和匿名字段 1.匿名结构体 匿名结构体:即没有名字的结构体,在创建匿名结构体时,同时初始化结构体。 实例: // 没有结构体命名过程, 直接创建一个结构体,并初始化s2:=struct{namestringageint}{} ...
所谓匿名字段实际上是一种结构体嵌套的方式,所以也可以称作嵌套字段。 这种方式可以实现组合复用,即通过匿名字段,结构体可以直接访问嵌套结构体的字段和方法,而无需通过字段名或类型进行嵌套。 2、简单示例 以下是一个简单的例子: // 人 type Person struct { ...
type Person struct { name string sex byte age int } type Student struct { // 一般情况下,定义结构体的时候,字段名和类型一一对应,如下:Person为类型,并无字段名。 Person //匿名字段,name默认Student就包含了Person的所有字段。 id int addr string ...
Go中的"继承"之struct的匿名字段 // code_016_anonymous_field project main.go package main import ( "fmt" ) type Person struct { name string sex byte age int } type Student struct { // 一般情况下,定义结构体的时候,字段名和类型一一对应,如下:Person为类型,并无字段名。
struct定义结构,结构由字段(field)组成,每个field都有所属数据类型,在一个struct中,每个字段名都必须唯一。 说白了就是拿来存储数据的,只不过可自定义化的程度很高,用法很灵活,Go中不少功能依赖于结构,就这样一个角色。 Go中不支持面向对象,面向对象中描述事物的类的重担由struct来挑。比如面向对象中的继承,可以...