问答

Golang中绑定方法接受者和和不绑定对性能有影响吗?绑定方法接受

作者:admin 2021-04-18 我要评论

eg: func(a *obj) A(param string){ } func A(param string){ } ### 这个是一种规范,与性能无关 ### 不同点: 1.如果用函数调用,函数名不可重复,绑定方法则可...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

eg:

func(a *obj) A(param string){
}
func A(param string){
}

###

这个是一种规范,与性能无关

###

不同点:
1.如果用函数调用,函数名不可重复,绑定方法则可以
2.使用方法绑定更符合面向对象编程的思想
3.可以构造类似orm中的Where(xxx).Find(xx)这种链式写法。函数只能内部嵌套Find(Where(xxx))。

性能上,首先以下这两种写法是等价的:

type TestTP struct {
   Age int
}
func (t *TestTP) A() int {
   t.Age++
 return t.Age
}
func main() {
   t := &TestTP{Age: 11}
   print((*TestTP).A(t))  // 12
   print(t.A())    // 13 
}

由此可以大致推测:函数可以理解为一个是全局的方法,一个是该struct的方法,性能上应该没有什么差别。 从汇编结果来看唯一的区别在于:0x0080 00128 (main.go:15) CALL "".(*TestTP).A(SB)也差不多是这个意思,多了个转换。因此性能上不会有大的影响。

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • nginx响应速度很慢

    nginx响应速度很慢

  • 点击选中的多选框,会在已选那一栏显示

    点击选中的多选框,会在已选那一栏显示

  • PHP 多态的理解

    PHP 多态的理解

  • 关于C语言中static的问题

    关于C语言中static的问题

腾讯云代理商
海外云服务器