一、面向对象
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(12, 2, "白色");
$r2 = new Rectangle(9, 4, "蓝色");
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{12, 2, "白色"}
r2 := Rectangle{9, 4, "蓝色"}
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元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。