浅拷贝

来源:4-4 开发一个浏览器代理2

weibo_隱懓_0

2020-11-26

老师,深浅拷贝原理都懂,但是这个写法还是没太明白,能再解释下吗

*outReq = *req

写回答

2回答

soap丶

2020-12-03

go中new()返回的是一个指针类型

而*指针代表该指针指向的值

所以*outReq = *req 代表的是将outReq指向的那片内存空间的值设置成req指向的那片内存空间值, 也就是将两片不同地址空间上的内容设置为一样. 表达能力不太好 希望能看明白 或者自己在纸上画一下就好理解了

0
2
weibo_隱懓_0
非常感谢!
2021-01-10
共2条回复

soap丶

2020-12-03

另外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的...

0
0

(打造简历金牌项目)Vue+Go 开发企业级微服务网关项目

简历中摒弃烂大街的培训机构项目,带你开发企业级微服务网关

1316 学习 · 352 问题

查看课程