首页 > Go学习 > Go语言中的结构体
2021
09-03

Go语言中的结构体

数组可以存储同一类型的数据,但在结构体中可以为不同项定义不同的数据类型

结构体是由一系列具有相同类型或不同类型的数据构成的数据集合

定义结构体

结构体定义需要使用type-struct语句

type语句定义结构体的名称

struct语句定义结构体中的成员

type struct_name struct {
   item1 type
   item2 type
   ...
   itemn type
}

定义了结构体类型,就能用于变量的声明和赋值:

variable_name := struct_name {val1, val2...valn}
不指定item赋值时传入的值必须顺序和数量都和结构体一致

variable_name := struct_name { item1: val1, item2: val2..., itemn: valn}
指定item赋值时传入的值的顺序和数量不需要和结构体一致,但是传入的item一定要是结构体中存在的,没有赋值的item会根据数据类型赋予默认值

访问结构体成员

使用点号(.)操作符来访问结构体的成员:variable_name.item

结构体指针

结构体作为一个特殊的自定义数据类型,使用指针时

var variable_name *struct_name

结构体指针变量访问结构体的成员时无需添加前缀星号,直接variable_name.item即可访问成员值

结构体实现 “继承”

Go语言本身并不支持继承,但可以使用组合的方法,实现类似继承的效果

定义两个结构体
type people struct{
    name string
    age int
}
type info struct{
    company string
    like string
}

以上两个结构体一个定义了一个人的姓名和年龄,一个定义了一个人的公司和爱好
能不能将两个结构体结合一下,实现类似继承的功能呢

我们修改people结构体
type people struct{
    name string
    age int
    info
}
将info嵌入到people中,做为people的一个匿名字段,这样people就直接拥有了info的所有属性了

使用时

myinfo := info{"XX公司","宅"}
me := people{"三千",33,myinfo}

这样就可以使用me.company和me.like获取相应的值了
最后编辑:
作者:qingheluo
这个作者貌似有点懒,什么都没有留下。

留下一个回复

你的email不会被公开。