温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

相同问题go语言与php的实现对比

发布时间:2020-07-02 00:40:43 阅读:1295 作者:ustb80 栏目:编程语言
PHP开发者专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

一、面向对象

php:

class Rectangle
{
    private $width;
    private $height;
    private $color;

    public function __construct($width$height$color)
    {
        $this->width  = $width;
        $this->height = $height;
        $this->color  = $color;
    }

    public function setColor($color)
    {
        $this->color = $color;
    }

    public function getColor()
    {
        return $this->color;
    }

    public function area()
    {
        return $this->width * $this->height;
    }


}

$r1 new Rectangle(122"白色");
$r2 new Rectangle(94"蓝色");
echo "Area of r1 is "$r1->area()."\n";
echo "Area of r2 is "$r2->area()."\n";

echo "Color of r2 is "$r2->getColor()."\n";

echo "set new color\n";
$r2->setColor("绿色");
echo "Color of r2 is "$r2->getColor()."\n";

go:

package main

import "fmt"

type Rectangle struct {
	width, height float64
	color         string
}

// 如果声明接收者为指定,当使用T类型来调用时,go会自动转换为*T,太TM聪明了
func (r *Rectangle) SetColor(color string) {
	r.color = color
}

func (r Rectangle) area() float64 {
	return r.width * r.height
}

func main() {
	r1 := Rectangle{122"白色"}
	r2 := Rectangle{94"蓝色"}

	fmt.Println("Area of r1 is: ", r1.area())
	fmt.Println("Area of r2 is: ", r2.area())

	fmt.Println("Color of r2 is: ", r2.color)
	fmt.Println("set new color")
	r2.SetColor("绿色"// 等价于(&r2).SetColor("绿色"),这里r2不需要传地址,当然,传地址也不错,只是go会自动帮助转换,没有必要
	fmt.Println("Color of r2 is: ", r2.color)
}

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI

开发者交流群×