【发布时间】:2017-05-22 18:13:02
【问题描述】:
我正在努力学习围棋。我了解到结构和数组是按值复制的(将它们传递给函数或将它们分配给变量时)。所以我们使用指针来允许修改它们并节省内存。
问题是,在某些情况下,我总是发现它们使用指向结构的指针。
例如,在an official web application tutorial 他们使用了代码
func (p *Page) save() error {
filename := p.Title + ".txt"
return ioutil.WriteFile(filename, p.Body, 0600)
}
在这里,结构没有发生数据更改。这发生在官方包和第 3 方包中的其他地方。
另一种情况是它们返回 &struct{}。来自上述同一链接的示例:
func loadPage(title string) *Page {
filename := title + ".txt"
body, _ := ioutil.ReadFile(filename)
return &Page{Title: title, Body: body}
}
那么,在哪些情况和地点应该使用指针呢?
【问题讨论】:
标签: go