문제

I'm doing some tests with goroutines just to learn how they work, however it seems they are not running at all. I've done a very simple test:

package main

import (
    "fmt"
)

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

func main() {
    go test()
}

I would expect this to print "test" however it simply doesn't do anything, no message but no error either. I've also tried adding a for {} at the end of the program to give the goroutine time to print something but that didn't help.

Any idea what could be the issue?

도움이 되었습니까?

해결책

program execution does not wait for the invoked function to complete

Go statements

Wait a while. For example,

package main

import (
    "fmt"
    "time"
)

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

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

Output:

test

다른 팁

I know it's answered, but for the sake of completeness:

Channels

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
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top