简单的goroutine无法在Windows上运行

时间:2013-02-02 17:35:40

标签: windows go goroutine

我正在用goroutines做一些测试,只是为了了解它们是如何工作的,但是看起来它们根本没有运行。我做了一个非常简单的测试:

package main

import (
    "fmt"
)

func test() {
    fmt.Println("test")
}

func main() {
    go test()
}

我希望这可以打印“测试”但是它根本不做任何事情,没有消息但也没有错误。我也尝试在程序结束时添加一个for {}来给goroutine时间打印一些东西,但这没有帮助。

知道可能是什么问题吗?

2 个答案:

答案 0 :(得分:10)

  

程序执行不等待调用的函数完成

     

Go statements

等一会儿。例如,

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
}