为什么我的goroutine不执行?

我正在学习Go,并且想尝试goroutine和频道。

这是我的代码:

package main

import "fmt"

func main(){

messages := make(chan string,3)

messages <- "one"

messages <- "two"

messages <- "three"

go func(m *chan string) {

fmt.Println("Entering the goroutine...")

for {

fmt.Println(<- *m)

}

}(&messages)

fmt.Println("Done!")

}

结果如下:

Done!

我不明白为什么我的goroutine永远不会执行。没有输入“进入goroutine”,并且没有任何错误消息。

回答:

事实是您的goroutine开始执行,但是在执行任何操作之前就结束了,因为您的程序在打印后立即停止Done!:goroutine的执行与主程序无关,但是将在与程序相同的位置处停止。因此,基本上,您需要一些使程序等待它们的过程。它可能是另一个等待大量消息sync.WaitGroup,或其他技巧的通道。

您应该在golang博客中阅读有关并发性的出色文章。

以上是 为什么我的goroutine不执行? 的全部内容, 来源链接: utcz.com/qa/404220.html

回到顶部