golang — 结构体

本文详细介绍了Golang中的结构体,包括结构体的定义、实例化方式(变量定义、使用new、取地址符号创建)、初始化方法(列表初始化与键值对初始化)、匿名结构体以及结构体的嵌套。此外,还讨论了如何为结构体添加方法,甚至为任意类型定义别名并添加方法,增强了Golang中类型系统的灵活性。
摘要由CSDN通过智能技术生成

结构体的组成

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
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值