Bruce Blog Bruce Blog
首页
  • CentOS
  • Ubuntu-Debian
  • 系统网络
  • 系统辅助工具
  • MySQL
  • Redis
  • Mongodb
  • Docker基础
  • Container基础
  • Kubernetes

    • Kubernetes基础
    • Kubernetes辅助
  • Container-Network
  • Jenkins
  • Gitlab
  • ArgoCD
  • Ansible
  • Terraform
  • AWS
  • MQ
  • NGINX
  • JumpServer
  • 基础
  • 函数模块
  • 框架
  • 基础

    • Golang环境
    • 语法
    • 数据类型与运算符
    • 分支语句
    • 循环语句
    • 数组
    • 切片
    • Map
    • String
    • 函数
    • 包的管理
    • 指针
    • 结构体
    • Go语言中的OOP
    • 方法和接口
    • 错误处理
  • Go进阶

    • Go进阶
  • Go框架

    • Go框架
  • Golang辅助

    • Golang辅助
  • CSS
  • HTML
  • JavaScript
  • 前端辅助
  • 常用命令
  • 性能监控工具
  • Windows下Docker使用
  • 日常学习
  • 其他导航

Bruce Tao

运维界的该溜子
首页
  • CentOS
  • Ubuntu-Debian
  • 系统网络
  • 系统辅助工具
  • MySQL
  • Redis
  • Mongodb
  • Docker基础
  • Container基础
  • Kubernetes

    • Kubernetes基础
    • Kubernetes辅助
  • Container-Network
  • Jenkins
  • Gitlab
  • ArgoCD
  • Ansible
  • Terraform
  • AWS
  • MQ
  • NGINX
  • JumpServer
  • 基础
  • 函数模块
  • 框架
  • 基础

    • Golang环境
    • 语法
    • 数据类型与运算符
    • 分支语句
    • 循环语句
    • 数组
    • 切片
    • Map
    • String
    • 函数
    • 包的管理
    • 指针
    • 结构体
    • Go语言中的OOP
    • 方法和接口
    • 错误处理
  • Go进阶

    • Go进阶
  • Go框架

    • Go框架
  • Golang辅助

    • Golang辅助
  • CSS
  • HTML
  • JavaScript
  • 前端辅助
  • 常用命令
  • 性能监控工具
  • Windows下Docker使用
  • 日常学习
  • 其他导航
  • 基础

    • Golang环境

    • 语法

    • 数据类型与运算符

    • 分支语句

    • 循环语句

    • 数组

    • 切片

    • Map

    • String

    • 函数

    • 包的管理

    • 指针

    • 结构体

    • Go语言中的OOP

      • Go语言中的OOP
      • 方法和接口

      • 错误处理

    • Go进阶

    • Go框架

    • Golang辅助

    • Golang
    • 基础
    • Go语言中的OOP
    Bruce
    2022-10-27
    目录

    Go语言中的OOP

    # 一、Go语言中的OOP

    image-20220905225953553

    # 示例代码
    package main
    
    import "fmt"
    
    func main() {
    	/*
    		面向对象: OOP
    
    		Go语言的结构体嵌套:
    			1.模拟嵌套继承性: is - a(子类是一个特殊的父类,一旦满足这样的范式;两个类就可以使用继承关系了)
    				type A struct{
    					field
    				}
    
    				type B struct {
    					A //匿名字段(A struct中的字段相对于B struct是提升字段;那么B struct就可以直接访问A struct中的字段)
    				}
    
    			 2.模拟聚合关系: has - a
    					type C struct {
    						field
    					}
    
    					type D struct {
    						c C //聚合关系
    					}
    	*/
    	//1.创建父类的对象
    	p1 := Person{name: "张三", age: 30}
    	fmt.Println(p1)
    	fmt.Println(p1.name, p1.age)
    
    	s1 := Student{Person{"李四", 20}, "清华大学"}
    	fmt.Println(s1)
    	fmt.Println(s1.Person.name, s1.Person.age, s1.school)
    
    	s2 := Student{Person: Person{name: "rose", age: 18}, school: "北京大学"}
    	fmt.Println(s2)
    
    	var s3 Student
    	s3.Person.name = "王五"
    	s3.Person.age = 19
    	s3.school = "清华大学"
    	fmt.Println(s3)
    
    	//提升字段
    	s3.name = "Ruby"
    	s3.age = 16
    	fmt.Println(s3)
    
    	fmt.Println(s1.name, s1.age, s1.school)
    	fmt.Println(s2.name, s2.age, s2.school)
    	fmt.Println(s3.name, s3.age, s3.school)
    	/*
    		s3.Person.name ---> s3.name
    		Student结构体将Person结构体作为一个匿名字段了
    		那么Person中的字段,对于Student来讲,就是提升字段
    		Student对象直接访问Person中的字段
    	*/
    }
    
    //1.定义父类
    type Person struct {
    	name string
    	age  int
    }
    
    //2.定义子类
    type Student struct {
    	Person        //模拟继承结构(这里的Person就是匿名结构体)
    	school string // 子类的新增属性
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    上次更新: 2024/04/09, 16:48:42
    结构体的使用
    方法和接口

    ← 结构体的使用 方法和接口→

    最近更新
    01
    AWS NAT-NetWork-Firwalld配置(一)
    04-09
    02
    AWS NAT-NetWork-Firwalld配置(二)
    04-09
    03
    kubernetes部署minio对象存储
    01-18
    更多文章>
    Theme by Vdoing | Copyright © 2019-2024 Bruce Tao Blog Space | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式