在这个例子中我如何使用 Go 例程?

我有以下代码片段。我创建了一个通道,最多从给定目录中获取 15 个文件名。我认为我可以创建 goroutines,其中一个在通道上生成条目,另一个使用它们。消费者应该打印从通道中获取的东西。


我的程序在不打印的情况下执行,我怀疑这是因为消费者例程正在睡眠 - 不是为 for 循环的每次迭代启动了一个新的 go 例程吗?不应该最终从频道打印一些东西吗?


func (u* uniprot) produce(n string) {

    u.namesInDir <- n

}   


func (u* uniprot) consume() {

    fmt.println(<-u.namesInDir)

}       


func (u* uniprot) readFilenames(dirname string) {

    u.namesInDir = make(chan string, 15)

    dir, err := os.Open(dirname)

    errorCheck(err) 

    names, err := dir.Readdirnames(0)

    errorCheck(err)

    for _, n := range names {

        go u.produce(n)

        go u.consume()

    }

}


慕勒3428872
浏览 161回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go