老师,请教一个问题,没有搞明白

来源:15-9 用户信息解析器(下)

慕粉3494503

2018-08-08

老师,我有一个地方不太理解,就是在parsecity这个方法中,在append时候,不单赋值name的话,每次m[2]会出相同的用户名问题,而m[1]就没有相同url的问题?

写回答

1回答

ccmouse

2018-08-13

这边是一个结构,其中说

Url: string(m[1])

这里会把m[1]的值拷贝到这个结构的Url字段中。

而后面ParserFunc是一个函数,函数的定义里用到了m[2]。根据我们之前说到的闭包,这里会把这个函数的定义连同m[2]打包成一个函数(闭包)。直到后面函数被执行的时候才去访问m[2]的值,而此时m[2]的值已经改变了。

因此这里我们在写函数的时候要小心闭包变量作用域的问题,如果有危险,可以采用后面我们所用到的变量传参的方式传进函数里面,来强制其进行拷贝。

2
1
慕粉3494503
非常感谢!
2018-08-13
共1条回复

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

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

5995 学习 · 1909 问题

查看课程