两个包之间的通道通信出现死锁- Golang。

我有两个包,它们通过两个通道进行通信。一个是main,另一个是函数。当我运行它时,我得到了一个死锁。

package main

import (
    functionspackage "GoEjemplos/subFolder"
    "fmt"
    "sync"
)

func main() {
    var wg sync.WaitGroup

    ChannelSendData := make(chan functionspackage.FunctionStruct, 1)
    defer close(ChannelSendData)

    data := functionspackage.FunctionStruct{
        FieldOne: 3.56,
        FieldTwo: 23,
    }

    ChannelSendData <- data

    wg.Add(1)
    go functionspackage.FunctionExt(ChannelSendData, &wg)

    recibe := <-functionspackage.ChannelOutFunct

    fmt.Println("channelOut: ", recibe)

    close(functionspackage.ChannelOutFunct)

    wg.Wait()
}

另一个包是

package functionspackage

import "sync"

type FunctionStruct struct {
    FieldOne float64
    FieldTwo int
}

var ChannelOutFunct chan float64

func FunctionExt(RecibeChan chan FunctionStruct, wg *sync.WaitGroup) (ChannelOutFunct chan float64) {

    reciveData := <-RecibeChan

    result := reciveData.FieldOne * float64(reciveData.FieldTwo)

    ChannelOutFunct <- result

    wg.Done()

    return ChannelOutFunct
}

这就是死锁。

PS C:\Go-Project\src\GoEjemplos> go run main.go
fatal error: all goroutines are asleep - deadlock!

goroutine 1 [chan receive (nil chan)]:
main.main()
        C:/Go-Project/src/GoEjemplos/main.go:32 +0x13d

goroutine 19 [chan send (nil chan)]:
GoEjemplos/subFolder.FunctionExt(0xc0000d4000, 0xc0000a2070, 0xc0000c9f18)
        C:/Go-Project/src/GoEjemplos/subFolder/functionsPackage.go:19 +0x85
created by main.main
        C:/Go-Project/src/GoEjemplos/main.go:30 +0x11a
exit status 2
PS C:\Go-Project\src\GoEjemplos>

你能给我解释一下问题出在哪里吗?

谢谢!