Structの中にあるチャンネルに値をsendするとdeadlockする
Golangで下記のコードを実行するとdeadlockを起こします。
SetValueの中で、引数として与えられたvalue
をg.CH
に渡す時にdeadlockになっているようです。
なぜ、deadlockになってしまうのでしょうか?
package main
import (
"fmt"
)
type GeneratorChannel struct {
X int
CH chan int
}
func New() *GeneratorChannel {
s := GeneratorChannel{}
s.CH = make(chan int)
return &s
}
func (g *GeneratorChannel) SetValue(value int) {
g.X = value
g.CH <- g.X
}
func (g *GeneratorChannel) GetChannelValue() int {
return <-g.CH
}
func main() {
g := New()
g.SetValue(4)
fmt.Println(g.GetChannelValue())
}