Go使用结构体和结构体成员来描述真实世界的实体和实例对应的各种属性。
Go中的类型可以被实例化,使用new或&构造的类型实例的类型是类型的指针。
结构体成员由一系列的成员变量构成,这些成员变量也被称为"字段"。
Go的结构体与"类"都是符合结构体,但Go中结构体的内嵌配合接口比面向对象具有更高的扩展性和灵活性。
Go不仅结构体能拥有方法,且每种自定义类型也可以拥有自己的方法。
type 类型名struct {
字段1 字段1类型
字段2 字段2类型
...
}
结构体的定义只是一种内存布局的描述,只有当结构体实例化时,才会真正的分配内存。因此必须在定义结构体并实例化后才能使用结构体的字段。
实例化就是根据结构体定义的格式创建一份与格式一致的内存区域,结构体实例与实例间的内存是完全独立的。
var ins T
# T 为结构体类型
#ins为结构体的实例
Go可以使用new关键字对类型(包括结构体、整形、浮点型、字符串等)进行实例化,结构体在实例化后会形成指针类型的结构体。
ins := new(T)
# ins: T类型被实例化后保存到ins变量中,ins的类型为*T,属于指针。
Go可以像访问普通结构体一样使用"."访问结构体指针的成员。
type Player struct {
Name string
Health_Point int
Magic_Point int
}
tank := new(Player)
tank.Name = "Canon"
tank.Health_Point = 300
ins := &T{}
# ins为结构体的实例,类型为*T,是指针类型
ins := 结构体类型名{
字段1:字段1的值
字段2:字段2的值
...
}
ins := 结构体类型名{
字段1的值,
字段2的值,
}
Go的类型或结构体没有构造函数的功能。结构体的初始化过程可以使用函数封装实现。
原文:https://www.cnblogs.com/followyou/p/12358919.html