这里也可以返回值然后来用,我看老师是返回的是地址,这是为什么呢

来源:4-2 包和封装

WittChen

2022-06-04

本节的一段代码

func createNode(value int) *treeNode {
	return &treeNode{value: value}
}

这样做是为了性能考虑吗?

func CreateNode(value int) Node {
	node := Node{value: value}
	fmt.Printf("node:%p \n", &node)
	return node
}
func main() {
	root := tree.CreateNode(1)
	fmt.Printf("root:%p \n", &root)
}

从上面这段代码可以看到,Go中不管是传值还是返回值,应该都是会拷贝一份

写回答

1回答

weixin_慕沐1036126

2022-06-07

我理解主要还是看你的返回结构的大小,如果返回的是一个很大的结构,并且该函数会频繁调用,那么可能会产生一定的拷贝开销。如果返回指针就没有这种问题。

1
0

Google资深工程师深度讲解Go语言 由浅入深掌握Go语言

语法+分布式爬虫实战 为转型工程师量身打造

5995 学习 · 1909 问题

查看课程