Go语言 - 面向对象

基于结构体实现Go的面向对象编程

// person结构体-person类
type person struct {
  name string
  age  int8
}
// person成员方法
func (p person) sayHi() {
  fmt.Printf("%s say Hi!\n", p.name)
}
// person成员方法
func (p *person) happyBirthday() {
 p.age++
}

// worker结构体-worker类
type worker struct {
  person // 匿名嵌套(继承)
  company string 
}
// worker成员方法
func (w worker) working() {
  w.sayHi() // 调用继承的方法
  fmt.Println("work at " + w.company)
}

// 使用案例:
w := worker{person: person{name: "go", age: 18}, company: "google"}
w.working()
// 打印结果:
//go say Hi!
//work at google

方法重写:

func (w *worker) happyBirthday() {
  w.age += 2 // + 2 ,persion为 + 1
}

// 调用案例:
w := worker{person: person{name: "go", age: 18}, company: "google"}
w.working()
w.happyBirthday()
fmt.Println(w.age)
// 打印结果:
//go say Hi!
//work at google
//20
posted @   HiIT青年  阅读(40)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· 对象命名为何需要避免'-er'和'-or'后缀
· SQL Server如何跟踪自动统计信息更新?
· AI与.NET技术实操系列:使用Catalyst进行自然语言处理
· 分享一个我遇到过的“量子力学”级别的BUG。
· Linux系列:如何调试 malloc 的底层源码
阅读排行:
· 对象命名为何需要避免'-er'和'-or'后缀
· JDK 24 发布,新特性解读!
· C# 中比较实用的关键字,基础高频面试题!
· .NET 10 Preview 2 增强了 Blazor 和.NET MAUI
· SQL Server如何跟踪自动统计信息更新?
点击右上角即可分享
微信分享提示