PHPer的Go之路 -- 类

臭大佬 2019-12-08 15:23:04 1152
Go 
简介 Go 没有 class、extends、implements 之类的关键字和相应的概念,而是借助结构体来实现类的声明

定义

Go 没有 class、extends、implements 之类的关键字和相应的概念,而是借助结构体来实现类的声明;
Go用构造体实现php类的功能;
Go没有thisselfparent之类的关键字,也没有构造函数和析构函数,方法和属性的可见性不是通过 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 "汪汪汪"
}