老师请问14-8这节课里的profile需要定义成指针类型吗?

来源:15-8 用户信息解析器(上)

sd1700092

2018-04-03

我的理解是应该这样写:profile := &model.Profile{} 因为要改变profile的值,所以还是定义成指针类型比较好

后面还是profile.Age = age

请问我这样的理解对吗?

因为我是搞Java开发的,所以对什么时候用值类型什么时候用指针类型还是会有些混淆。。。

写回答

1回答

ccmouse

2018-04-03

这里是说方法如果要改变成员变量的值,我们要用指针接收者。而不是说改变了就要指针。这里profile我的观点是不用指针比较好,因为是个值类型,连方法都没有,只是字段多了点,地位其实和整数啊,字符串啊差不多。
值还是指针,主要是作为参数传递给函数时考虑,当然接收者也是一种函数参数。如果传过去以后函数要改变它的值,并且体现在调它的人那里,比如体现在main函数里,那么才需要也必须使用指针。
另一个用处是优化,使用指针可以省一次拷贝。但是优化我们不要急着做,除非检测出来的确慢在这里。

1
1
sd1700092
非常感谢!指针主要是作为参数传递给函数时要用到
2018-04-04
共1条回复

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

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

5995 学习 · 1909 问题

查看课程