老师,请教一个问题,没有搞明白
来源:15-9 用户信息解析器(下)

慕粉3494503
2018-08-08
老师,我有一个地方不太理解,就是在parsecity这个方法中,在append时候,不单赋值name的话,每次m[2]会出相同的用户名问题,而m[1]就没有相同url的问题?
写回答
1回答
-
这边是一个结构,其中说
Url: string(m[1])
这里会把m[1]的值拷贝到这个结构的Url字段中。
而后面ParserFunc是一个函数,函数的定义里用到了m[2]。根据我们之前说到的闭包,这里会把这个函数的定义连同m[2]打包成一个函数(闭包)。直到后面函数被执行的时候才去访问m[2]的值,而此时m[2]的值已经改变了。
因此这里我们在写函数的时候要小心闭包变量作用域的问题,如果有危险,可以采用后面我们所用到的变量传参的方式传进函数里面,来强制其进行拷贝。
212018-08-13
相似问题