在没有通道的情况下同时计算斐波那契数列,但指针不起作用

calculating fibonacci concurrently without channels, but pointers are not working

在这个练习中,我试图计算斐波那契数,但是通过生成 goroutines 并通过参数中的指针发回结果,但我做错了什么请帮助

package main

import (
    "fmt"
)

func fib(n int, p *int) {
    fmt.Println(n)
    var a, b int
    if n > 1 {
        go fib(n-1, &a)
        go fib(n-2, &b)
        *p = a + b
    } else {
        *p = n
    }
    fmt.Println(*p)

}

func main() {
    c := -1
    go fib(5, &c)
    fmt.Println(c)
}

谢谢@poWar,下面是我发布的解决方案,只是为了不让问题悬而未决(可能不是最好的,但完成了练习)

package main

import (
    "fmt"
    "sync"
)

func fib(n int, p *int, wg1 *sync.WaitGroup) {
    // fmt.Println(n)
    a, b := -1, -1
    var wg sync.WaitGroup
    if n > 1 {
        wg.Add(1)
        go fib(n-1, &a, &wg)
        wg.Add(1)
        go fib(n-2, &b, &wg)
        wg.Wait()
        *p = a + b
    } else {
        *p = n
    }
    wg1.Done()
    // fmt.Println(*p)

}

func main() {
    c := -1
    var wg sync.WaitGroup
    wg.Add(1)
    go fib(30, &c, &wg)
    wg.Wait()
    fmt.Println(c)
}