采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师,深浅拷贝原理都懂,但是这个写法还是没太明白,能再解释下吗
*outReq = *req
go中new()返回的是一个指针类型
而*指针代表该指针指向的值
所以*outReq = *req 代表的是将outReq指向的那片内存空间的值设置成req指向的那片内存空间值, 也就是将两片不同地址空间上的内容设置为一样. 表达能力不太好 希望能看明白 或者自己在纸上画一下就好理解了
你的理解是对的,是浅拷贝哦, 浅拷贝对于值类型的话是完全拷贝一份,而对于引用类型是拷贝其地址。
非常感谢!
另外go中有个语法糖, 对于指针类型的变量p不用用*p 的方式去取它的值 可以直接用p.xx 的方式操作, 如下代码:
type Cat struct { Name string}func main() { c := new(Cat) c.Name = "catName" print(c.Name)}
另外new()的原码如下
// The new built-in function allocates memory. The first argument is a type, // not a value, and the value returned is a pointer to a newly // allocated zero value of that type. func new(Type) *Type
慕课的代码模板竟然没有支持go的...
登录后可查看更多问答,登录/注册
简历中摒弃烂大街的培训机构项目,带你开发企业级微服务网关
1.5k 23
1.5k 9
1.0k 8
1.4k 8
954 7