Go 变通实现class效果


Go里没有 class 关键字,一切一切都是函数,但是面向对象毕竟毕竟只是一种思想,我们可以用另一种方法来实现 class

package main  
  
import "fmt"  
  
type Person struct {  
   name   string  
   gender string  
}  
  
// 通过结构体嵌套来实现类的继承功能  
type Student struct {  
   Person  
}  
  
type Teacher struct {  
   Person  
}  
  
// 通过把函数声明成某个结构的独有属性来实现类的函数功能  
func (p *Person) say() string {  
   return "Hello World!"  
}  
  
func main() {  
   s := &Student{Person{  
      name:   "张三",  
      gender: "男",  
   }}  
  
   t := &Teacher{}  
  
   fmt.Println(s.say())  
   fmt.Println(t.say())  
}

Output

Hello World!
Hello World!

如果本文帮助到了你,帮我点个广告可以咩(o′┏▽┓`o)


评论
  目录