は私が投稿eduncan911 @リンクを見たが、それを適用しようとしたことがありませんでした。うまくいけば、この例は、役立ちます:
package main
import (
"fmt"
"time"
)
type dummyStruct struct {
a int
}
func (m *dummyStruct) doSomethingElse() {
fmt.Println(m.a)
}
func doSomething(c chan int) {
for i := 0; i < 5; i++ {
go func() {
x := time.Now().Unix()
c <- int(x)
}()
time.Sleep(time.Second)
}
}
func main() {
outputs := make(chan int)
m := &dummyStruct{}
doSomething(outputs)
for {
//block until we can read from channel:
x := <-outputs
m.a = x
m.doSomethingElse()
}
}
//Output:
go run main.go
1474052448
1474052449
1474052450
1474052451
1474052452
fatal error: all goroutines are asleep - deadlock!
'dummyStruct'もスレッドセーフである必要があります。モバイル上の – squiguy