结构体的组成
Golang中结构体类型的关键字是struct。
结构体成员是由一系列的成员 变量 构成的,这些成员变量也被称为 “字段”。字段具有以下特性:
- 字段拥有自己的类型和值。
- 字段名必须唯一。
- 字段的类型可以是任意的内置数据类型,也可以是结构体类型。
结构体定义
type StructName struct {
Field1 FieldType1 [Tag1]
Field2 FieldType2 [Tag2]
Field3 FieldType3 [Tag3]
...
}
结构体实例化
变量定义的方式
var varName StructName
new分配内存方式
var varName = new(StructName)
&符号定义结构体
var varName = &StructName{}
结构体初始化
列表初始化
varName := StructName{
Field1_Value,
Field2_Value,
Field3_Value,
}
注意:使用列表,需每个字段都进行初始化。
键值对初始化
varName := StructName{
Field1:Field1Value,
Field2:Field2Value,
...
}
说明:使用键值对的形式给结构体初始化时,我们只需要指定需要设置值的字段名,然后使用冒号的形式给字段名设置值,不需要设置值的字段名可以忽略。
匿名结构体
匿名结构体没有类型名称,无须通过type关键字定义。
匿名结构体初始化
s := struct {
// 匿名结构体字段定义
Field1 Field1Type
Field2 Field2Type
…
}{
// 字段值初始化
Field1: Value1,
Field2: Value2,
…
}
结构体嵌套
结构体定义
s := struct {
// 结构体嵌套字段定义
Field1 Field1Type
Field2 StructType
…
}{
// 字段值初始化
Field1: Value1,
Field2: Value2,
…
}
结构体匿名字段
匿名字段定义
type StructName struct {
Field1 Field1Type
Field2 Field1Type
…
}
type StructName2 struct {
Field1 Field1Type
StructName
…
}
任意类型添加方法
Go 语言 中除了可以为 结构体 添加方法,还可以为任意 类型 使用 type 定义别名,之后,就可以为别名添加方法。
type MyString string
func (m MyString)IsLargeString()bool{
if len(m) > 10{
return true
}
return false
}