当前位置:   article > 正文

Golang中结构体-类、封装、继承_golang 结构体继承

golang 结构体继承

Go中类的封装

        形式 Func (实例 结构体名)函数名(参数)返回值{}

        Go中的类即为struct

代码示例:

  1. package main
  2. import "fmt"
  3. //Person类
  4. type Person struct {
  5. //成员属性
  6. name string
  7. age int
  8. score float32
  9. }
  10. //方法,绑定到类上
  11. func (P1 Person) test1() {
  12. fmt.Println("姓名:", P1.name)
  13. fmt.Println("年龄:", P1.age)
  14. fmt.Println("得分:", P1.score)
  15. }
  16. /*
  17. 指针绑定和普通绑定的区别
  18. */
  19. //普通绑定
  20. func (P2 Person) test2() {
  21. P2.name = "test2"
  22. }
  23. //指针绑定
  24. func (P3 *Person) test3() {
  25. P3.name = "test3"
  26. }
  27. func main() {
  28. //创建实例
  29. person1 := Person{
  30. name: "小明",
  31. age: 20,
  32. score: 99.0,
  33. }
  34. person2 := person1
  35. //测试绑定方法
  36. person1.test1()
  37. /*
  38. 测试指针绑定和普通绑定的区别
  39. */
  40. fmt.Println("---------------------")
  41. fmt.Println("普通绑定")
  42. fmt.Println("姓名修改前")
  43. fmt.Println("姓名:", person1.name)
  44. person1.test2()
  45. fmt.Println("姓名修改后")
  46. fmt.Println("姓名:", person1.name)
  47. fmt.Println("---------------------")
  48. fmt.Println("指针绑定")
  49. fmt.Println("姓名修改前")
  50. fmt.Println("姓名:", person2.name)
  51. fmt.Println("姓名修改后")
  52. person2.test3()
  53. fmt.Println("姓名:", person2.name)
  54. fmt.Println("---------------------")
  55. }

运行结果:

 Go中的嵌套与继承

        结构体中包含另一个结构体,表示嵌套。

        结构体中直接包含结构体名,表示继承该结构体。将其变量和方法均继承过来。

        继承时虽然没有定义字段名,但是会自动创建一个默认的同名字段。为了在子类中依然可以操作父类,因为子类父类可能出现同名字段。

代码示例:

  1. package main
  2. import "fmt"
  3. //定义一个类
  4. type Human struct {
  5. name string
  6. age int
  7. }
  8. //父类方法
  9. func (H Human) test1() {
  10. fmt.Println("父类的方法")
  11. }
  12. //嵌套
  13. type Student struct {
  14. H Human
  15. score float32
  16. }
  17. //继承
  18. type Teacher struct {
  19. Human
  20. gender string
  21. }
  22. func main() {
  23. //嵌套
  24. student := Student{
  25. H: Human{
  26. name: "小明",
  27. age: 20,
  28. },
  29. score: 99.0,
  30. }
  31. fmt.Println("嵌套定义的实例信息:")
  32. fmt.Println(student)
  33. //继承
  34. teacher := Teacher{}
  35. teacher.name = "王老师"
  36. teacher.age = 40
  37. teacher.gender = "男"
  38. fmt.Println("继承定义的信息:")
  39. fmt.Println(teacher)
  40. //子类调用父类方法
  41. teacher.test1()
  42. }

运行结果:

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/42793
推荐阅读
  

闽ICP备14008679号