PHPer的Go之路 -- 类
简介
Go 没有 class、extends、implements 之类的关键字和相应的概念,而是借助结构体来实现类的声明
定义
Go 没有 class、extends、implements 之类的关键字和相应的概念,而是借助结构体来实现类的声明;
Go用构造体实现php类的功能;
Go没有this
、self
、parent
之类的关键字,也没有构造函数和析构函数,方法和属性的可见性不是通过 private、protected、public 之类的关键字来实现;
package main
import (
"fmt"
)
type Employee struct {
name string
salary int
currency string
}
/*
displaySalary() 方法将 Employee 做为接收器类型
*/
func (e Employee) displaySalary() {
fmt.Printf("Salary of %s is %s%d", e.name, e.currency, e.salary)
}
func main() {
emp1 := Employee {
name: "Sam Adolf",
salary: 5000,
currency: "$",
}
emp1.displaySalary() // 调用 Employee 类型的 displaySalary() 方法
}
继承
以上是摘抄的栗子:
动物类:
type Animal struct {
name string
}
func (a Animal) Call() string {
return "动物的叫声..."
}
func (a Animal) FavorFood() string {
return "爱吃的食物..."
}
func (a Animal) GetName() string {
return a.name
}
狗继承动物:
type Dog struct {
Animal
//这里可以继承多个,一行一个
}
func (d Dog) FavorFood() string {
return "骨头"
}
func (d Dog) Call() string {
return "汪汪汪"
}