Вопрос

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