【发布时间】:2014-01-02 00:39:29
【问题描述】:
我一直在尝试围绕 Go 中的接口概念展开思考。阅读this 和this 帮助很大。
唯一让我不舒服的是语法。看看下面的the example:
package main
import "fmt"
type Interface interface {
String() string
}
type Implementation int
func (v Implementation) String() string {
return fmt.Sprintf("Hello %d", v)
}
func main() {
var i Interface
impl := Implementation(42)
i = impl
fmt.Println(i.String())
}
我的问题是i = impl。基于接口实例实际上持有对实际数据的指针引用这一事实,我觉得这样做i = &impl 会更自然。通常在不使用& 时分配非指针会生成数据的完整内存副本,但是当分配给接口时,这似乎回避了这一点,而是简单地(在幕后)将指针分配给接口值。我说的对吗?也就是说,int(42) 的数据不会复制到内存中?
【问题讨论】:
标签: go