php trait和go struct的匿名字段

首先要申明,php中的trait的概念就是和go语言中的struct的匿名字段是一个概念。都是希望将一个结构融入到另外一个结构中,增加另外一个结构的功能。而不是通过树形的继承

php trait demo

<?php

    class Base {
        public function sayHello() {
            echo 'Hello';
        }
    }

    trait SayHello {
        public function sayHello() {
            parent::sayHello();
            echo ' World !';
        }

        public function sayHi() {
            echo 'sayHi';
        }
    }

    class MyHelloWorld extends Base {
        use SayHello;
    }


    $helloWorld = new MyHelloWorld();

    $helloWorld->sayHello();
    $helloWorld->sayHi();
##输出结果
Hello World !sayHi
##说明用trait定义的结构可以增强其他结构的功能

go语言struct匿名字段

package main
import "fmt"

type Color struct {
    red string
    yellow string
    blue string
}

type Iphone struct {
    Color //匿名字段,为了增强Iphone这个数据结构的
    size float32
    memory string
}

func main() {
    iphone := Iphone{Color{"red", "yellow", "blue"}, 4.8, "256G"}
    fmt.Println(iphone.red, iphone.yellow, iphone.blue, iphone.size, iphone.memory)
}

猜你喜欢

转载自blog.csdn.net/baixiaoshi/article/details/79080461