(18条消息) Go语言自学系列 | golang结构体_COCOgsta的博客-CSDN博客



Go语言自学系列 | golang结构体

COCOgsta 于 2022-04-21 16:30:18 发布 13 收藏
分类专栏: 视频学习笔记 文章标签: golang

视频来源:B站《golang入门到项目实战 [2021最新Go语言教程,没有废话,纯干货!持续更新中...]》

一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持!

附上汇总贴:Go语言自学系列 | 汇总_COCOgsta的博客-CSDN博客


go语言没有面向对象的概念了,但是可以使用结构体来实现,面向对象编程的一些特性,例如:继承、组合等特性。

go语言结构体的定义

上一节我们介绍了类型定义,结构体的定义和类型定义类似,只不过多了一个struct关键字,语法结构如下:

  1. 1
    type struct_variable_type struct {
  2. 2
    member definition;
  3. 3
    member definition;
  4. 4
    ...
  5. 5
    member definition;
  6. 6
    }

type:结构体定义关键字

struct_variable_type:结构体类型名称

struct:结构体定义关键字

member definition:成员定义

实例

下面我们定义一个人的结构体Person

  1. 1
    type Person struct {
  2. 2
    id int
  3. 3
    name string
  4. 4
    age int
  5. 5
    email string
  6. 6
    }

以上我们定义一个Person结构体,有四个成员,来描述一个Person的信息。

同类型的可以合并到一行,例如:

  1. 1
    type Person struct {
  2. 2
    id, age int
  3. 3
    name, email string
  4. 4
    }

声明一个结构体变量

声明一个结构体变量和声明一个普通变量相同,例如:

  1. 1
    package main
  2. 2
  3. 3
    import "fmt"
  4. 4
  5. 5
    type Person struct {
  6. 6
    id, age int
  7. 7
    name, email string
  8. 8
    }
  9. 9
  10. 10
    func main() {
  11. 11
    var tom Person
  12. 12
    fmt.Printf("tom: %v\n", tom)
  13. 13
    kite := Person{}
  14. 14
    fmt.Printf("kite: %v\n", kite)
  15. 15
    }

运行结果

  1. 1
    [Running] go run "/Users/guoliang/SynologyDrive/软件开发/go/golang入门到项目实战/goproject/360duote.com/pro01/test.go"
  2. 2
    tom: {0 0 }
  3. 3
    kite: {0 0 }

结构体成员,在没有赋值之前都是零值。

访问结构体成员

可以使用点运算符(.),来访问结构体成员,例如:

  1. 1
    package main
  2. 2
  3. 3
    import "fmt"
  4. 4
  5. 5
    func main() {
  6. 6
    type Person struct {
  7. 7
    id, age int
  8. 8
    name, email string
  9. 9
    }
  10. 10
  11. 11
    var tom Person
  12. 12
    tom.id = 1
  13. 13
    tom.name = "tom"
  14. 14
    tom.age = 20
  15. 15
    tom.email = "tom@gmail.com"
  16. 16
    fmt.Printf("tom: %v\n", tom)
  17. 17
    }

运行结果如下:

  1. 1
    [Running] go run "/Users/guoliang/SynologyDrive/软件开发/go/golang入门到项目实战/goproject/360duote.com/pro01/test.go"
  2. 2
    tom: {1 20 tom tom@gmail.com}

匿名结构体

如果结构体是临时使用,可以不用起名字,直接使用,例如:

  1. 1
    package main
  2. 2
  3. 3
    import "fmt"
  4. 4
  5. 5
    func main() {
  6. 6
    var dog struct {
  7. 7
    id int
  8. 8
    name string
  9. 9
    }
  10. 10
    dog.id = 1
  11. 11
    dog.name = "花花"
  12. 12
    fmt.Printf("dog: %v\n", dog)
  13. 13
  14. 14
    }

yg9538 2022年7月22日 22:48 490 收藏文档