假设我有一个结构,实现了如下所示的接口:
type IFace interface {
Method1()
Method2()
Method3()
}
type Face struct {
Prop1 string
Prop2 int
}
// IFace implementation here...
现在,如果我有接受IFace
的方法,那么最好将它设计为接受指向该值接口的指针吗?
func DummyMethod(f *IFace) {
(*f).Method1()
}
func DummyMethod(f IFace){
f.Method1()
}
我的第一个猜测是,由于这些是结构体,因此最好通过值传递?还是有一个经验法则考虑何时开始传递指针的结构的大小和性质?
此外,当我们向结构中添加方法时,最好将指针传递给该结构或其值?
答案 0 :(得分:1)
将接口类型作为参数传递时,按值传递, 请注意,接口类型本身将是指向具体类型的指针。
在性能方面,使用接口也要付费, 根本无法内联。
我想可以在每个请求/进入点使用十个调用的接口, 但是如果某个应用必须进行数千次调用,请在进行调用之前先对代码进行基准测试。