美文网首页
go 使用管道

go 使用管道

作者: 智勇双全的小六 | 来源:发表于2018-06-26 10:32 被阅读0次
    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)
              }
        }
    }
    

    相关文章

      网友评论

          本文标题:go 使用管道

          本文链接:https://www.haomeiwen.com/subject/vpspyftx.html