searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

GO结构体笔记

2024-08-26 09:48:25
2
0

Go语言中的结构体(Struct)笔记

1. 结构体概述

在Go语言中,结构体是一种复合数据类型,用于将多个不同类型的变量组合成一个单一的单元。结构体由一系列命名的成员组成,这些成员可以有不同的类型。结构体允许你创建自定义的数据类型,非常适合用来表示复杂的数据对象,如用户信息、产品详情等。

2. 结构体的声明

结构体的声明使用type关键字,后面跟着结构体的名称和一对花括号{},其中包含成员的定义。

type Person struct {
    Name string
    Age  int
}

3. 结构体的初始化

结构体可以通过指定所有字段的值来初始化,也可以只初始化部分字段。

p1 := Person{Name: "张三", Age: 25} // 全部字段初始化
p2 := Person{Name: "李四"}           // 部分字段初始化,Age默认为0

4. 访问结构体的字段

通过点运算符.可以访问结构体的字段。

fmt.Println(p1.Name) // 输出:"张三"

5. 结构体的方法

结构体可以拥有方法,方法定义时可以指定接收者,接收者可以是指针或值。

type Person struct {
    Name string
}

func (p Person) Greet() string {
    return "你好,我是" + p.Name
}

6. 结构体的匿名字段

结构体中的匿名字段(没有名称的字段)可以被直接访问,就像它是结构体的一个公共字段一样。

type Student struct {
    Person
    Grade int
}

这样,Student类型可以直接访问Person类型的字段和方法。

7. 结构体的嵌套

结构体可以包含其他结构体作为其字段,实现嵌套结构。

type Address struct {
    Street string
    City   string
}

type Person struct {
    Name    string
    Address Address
}

8. 结构体的比较

两个结构体相等当且仅当它们的每个字段都相等。对于指针类型的字段,比较的是它们的地址,而不是它们所指向的值。

p1 := Person{Name: "张三"}
p2 := Person{Name: "张三"}
fmt.Println(p1 == p2) // 输出:false,因为比较的是结构体的地址

结论

结构体是Go语言中一种非常强大的数据组织方式,它允许你创建复杂的数据模型,封装相关属性和行为。熟练掌握结构体的使用,对于编写高质量、可维护的Go程序至关重要。无论是处理业务逻辑还是设计API接口,结构体都是不可或缺的工具。

0条评论
0 / 1000
荣****睿
7文章数
0粉丝数
荣****睿
7 文章 | 0 粉丝
荣****睿
7文章数
0粉丝数
荣****睿
7 文章 | 0 粉丝
原创

GO结构体笔记

2024-08-26 09:48:25
2
0

Go语言中的结构体(Struct)笔记

1. 结构体概述

在Go语言中,结构体是一种复合数据类型,用于将多个不同类型的变量组合成一个单一的单元。结构体由一系列命名的成员组成,这些成员可以有不同的类型。结构体允许你创建自定义的数据类型,非常适合用来表示复杂的数据对象,如用户信息、产品详情等。

2. 结构体的声明

结构体的声明使用type关键字,后面跟着结构体的名称和一对花括号{},其中包含成员的定义。

type Person struct {
    Name string
    Age  int
}

3. 结构体的初始化

结构体可以通过指定所有字段的值来初始化,也可以只初始化部分字段。

p1 := Person{Name: "张三", Age: 25} // 全部字段初始化
p2 := Person{Name: "李四"}           // 部分字段初始化,Age默认为0

4. 访问结构体的字段

通过点运算符.可以访问结构体的字段。

fmt.Println(p1.Name) // 输出:"张三"

5. 结构体的方法

结构体可以拥有方法,方法定义时可以指定接收者,接收者可以是指针或值。

type Person struct {
    Name string
}

func (p Person) Greet() string {
    return "你好,我是" + p.Name
}

6. 结构体的匿名字段

结构体中的匿名字段(没有名称的字段)可以被直接访问,就像它是结构体的一个公共字段一样。

type Student struct {
    Person
    Grade int
}

这样,Student类型可以直接访问Person类型的字段和方法。

7. 结构体的嵌套

结构体可以包含其他结构体作为其字段,实现嵌套结构。

type Address struct {
    Street string
    City   string
}

type Person struct {
    Name    string
    Address Address
}

8. 结构体的比较

两个结构体相等当且仅当它们的每个字段都相等。对于指针类型的字段,比较的是它们的地址,而不是它们所指向的值。

p1 := Person{Name: "张三"}
p2 := Person{Name: "张三"}
fmt.Println(p1 == p2) // 输出:false,因为比较的是结构体的地址

结论

结构体是Go语言中一种非常强大的数据组织方式,它允许你创建复杂的数据模型,封装相关属性和行为。熟练掌握结构体的使用,对于编写高质量、可维护的Go程序至关重要。无论是处理业务逻辑还是设计API接口,结构体都是不可或缺的工具。

文章来自个人专栏
GO笔记
6 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0