为了账号安全,请及时绑定邮箱和手机立即绑定

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

标签:
Go


一、面向对象

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) }

©著作权归作者所有:来自51CTO博客作者ustb80的原创作品,如需转载,请注明出处,否则将追究法律责任


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消