*result = SerializeResult(engineResult) 这地方可以不加*吗,传过来参数已经加*了

来源:18-7 实现爬虫服务

慕数据9351714

2022-10-12

func (CrawlService) Process(req Request, result *ParserResult) error方法中*result = SerializeResult(engineResult) 这地方的result可以不加*吗?方法参数中已经加过了

写回答

1回答

ccmouse

2022-10-15

还是需要加的,不然会编译错误。

这里加不加,看的是类型。result *ParserResult,说明result是指向ParserResult的指针。调用Process的人会生成一个ParserResult,把它的地址传给Process,由Process通过此地址填入ParserResult具体的值。

具体填入的动作就发生在*result = SerializeResult(engineResult)处,SerializeResult返回的是ParserResult,所以=左边也要是ParserResult类型,所以必须*result才是result所指向的ParserResult。所做的动作就是把SerializeResult返回的ParserResult填入result所指向的ParserResult

1
1
慕数据9351714
明白了,谢谢老师!~
2022-10-15
共1条回复

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

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

5995 学习 · 1909 问题

查看课程