我有简单的 Go 代码:
type MyInterface interface {
Do()
}
type Doer struct{}
func (d *Doer) Do() {}
// Option 1
var _ MyInterface = (*Doer)(nil)
// Option 2
var _ MyInterface = &Doer{}
与选项 2 相比,使用选项 1(在任何地方都被广泛使用和建议)强制执行接口的缺点是什么?
如果我们丢弃结果,实例化一个真实对象而不是指针有什么害处?
我知道选项 2 可能慢了一毫秒,因为它为结构分配内存,而且 GC 可能还有一毫秒的时间来清理它,但所有这些都只在启动时发生,不会影响运行时。
这些是我的正确还是我错过了什么?
慕田峪4524236
相关分类