- 管道声明
type Job51 struct {
KeyWord string
OriginUrlModel string
OriginUrl string
OriginContent string
PageNum int
// 声明一个类型为 string 的双向管道
EachPageUrls chan string
}
- 初始化管道
注意管道是有容量的,如果管道不声明容量,则默认为1,即存入一个数据就会阻塞,直到管道内的数据消费后才能继续塞入数据
func (j *Job51) setEachPageUrls(){
// 初始化管道,声明管道的容量
j.EachPageUrls = make(chan string, j.PageNum)
for num := 1; num <= j.PageNum; num++{
url := fmt.Sprintf(j.OriginUrlModel, j.KeyWord, strconv.Itoa(num))
j.EachPageUrls <- url
log.Println("[setEachPageUrls]",url," is appended chan")
if j.EachPageUrls == j.PageNum{
// 数据发送完毕后需要关闭管道,否则就会hang住
defer close(j.EachPageUrls)
}
}
}
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。