我正在用goroutines做一些测试,只是为了了解它们是如何工作的,但是看起来它们根本没有运行。我做了一个非常简单的测试:
package main
import (
"fmt"
)
func test() {
fmt.Println("test")
}
func main() {
go test()
}
我希望这可以打印“测试”但是它根本不做任何事情,没有消息但也没有错误。我也尝试在程序结束时添加一个for {}
来给goroutine时间打印一些东西,但这没有帮助。
知道可能是什么问题吗?
答案 0 :(得分:10)
程序执行不等待调用的函数完成
等一会儿。例如,
package main
import (
"fmt"
"time"
)
func test() {
fmt.Println("test")
}
func main() {
go test()
time.Sleep(10 * time.Second)
}
输出:
test
答案 1 :(得分:9)
我知道它得到了回答,但为了完整起见:
渠道强>
package main
import (
"fmt"
)
func test(c chan int) {
fmt.Println("test")
// We are done here.
c <- 1
}
func main() {
c := make(chan int)
go test(c)
// Wait for signal on channel c
<- c
}