gpt4 book ai didi

go - 在 Go 中按值传递还是按引用传递效率更高?

转载 作者:数据小太阳 更新时间:2023-10-29 03:09:17 26 4
gpt4 key购买 nike

假设我有一个实现如下接口(interface)的结构:

type IFace interface {
Method1()
Method2()
Method3()
}


type Face struct {
Prop1 string
Prop2 int
}


// IFace implementation here...

现在,如果我有接受 IFace 的方法,将其设计为接受指向该值接口(interface)的指针是否更好?

  1. 接受指针:
func DummyMethod(f *IFace) {
(*f).Method1()
}
  1. 按值:
    func DummyMethod(f IFace){
f.Method1()
}

我的第一个猜测是因为这些是结构体,所以按值传递可能更好?或者在开始传递指针时是否有考虑结构的大小和性质的经验法则?

此外,当我们向结构体添加方法时,是传递一个指向结构体的指针还是它的值更好?

最佳答案

当传递接口(interface)类型作为参数时,按值传递,请注意,接口(interface)类型本身将是指向具体类型的指针。

在性能方面,使用接口(interface)也是有代价的,它根本无法内联。

我想在每个请求/入口点使用带有十几个调用的接口(interface)是可以的,但如果应用必须进行数千次调用,请在调用之前先对代码进行基准测试。

关于go - 在 Go 中按值传递还是按引用传递效率更高?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54848463/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com