8

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

package main

import (
    "fmt"
)

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

func main() {
    go test()
}

我希望这会打印“测试”,但它根本不做任何事情,没有消息但也没有错误。我还尝试for {}在程序末尾添加 a 以让 goroutine 有时间打印一些东西,但这并没有帮助。

知道可能是什么问题吗?

4

2 回答 2

11

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

Go 语句

等一会儿。例如,

package main

import (
    "fmt"
    "time"
)

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

func main() {
    go test()
    time.Sleep(10 * time.Second)
}

输出:

test
于 2013-02-02T17:56:21.233 回答
10

我知道它已回答,但为了完整起见:

频道

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
}
于 2013-02-05T13:38:38.757 回答