go 使用管道

  1. 管道声明
type Job51 struct {
    KeyWord        string
    OriginUrlModel string
    OriginUrl      string
    OriginContent  string
    PageNum        int
// 声明一个类型为 string 的双向管道
    EachPageUrls   chan string
}
  1. 初始化管道
    注意管道是有容量的,如果管道不声明容量,则默认为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辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 众所周知,说到 IT 行业,大家的第一印象都是「加班严重」,不得不说,加班确实是 IT 行业潜规则了,IT 行业也...
    stormzhang阅读 2,866评论 15赞 35
  • 午睡,看似一个只有十几分钟乃至一个小时的小憩,但是这段时间却能给午后时光充满电,再战天明!因此午睡显得尤为重要了!...
    安枫阅读 295评论 0赞 0
  • 投射1月份劳务费上8000块。 投射老公或婆婆主动给我儿子周末的伙食费及婆婆的每个月的伙食费,这样我的压力就会少些...
    丽丽丫丫阅读 250评论 0赞 0
  • 大二某一天,他看见她从食堂走出来,走上前说:“我们做个朋友吧!”女孩一怔,随后看见了一个男生,个子不高,剑眉星目,...
    虾百花阅读 386评论 1赞 1

友情链接更多精彩内容