```go
package main
import (
"fmt"
"time"
)
type cs struct {
Cs []int
}
var c [4](chan cs)
func css(i int) {
for {
fmt.Println("i:", i, "收到信息", <-c[i])
}
}
func main() {
for i := 0; i < 4; i++ {
c[i] = make(chan cs)
}
for i := 0; i < 4; i++ {
go css(i)
}
go func() {
// j := 0
cs := cs{Cs: []int{0, 1, 2, 3, 15, 16, 17, 18}}
for i := 0; i < 4; i++ {
cs.Cs = append(cs.Cs, i)
fmt.Println("i:", i, "发出:", cs)
c[i] <- cs
cs.Cs = cs.Cs[:3]
}
}()
time.Sleep(time.Second * 10)
}
```
<iframe style="border:1px solid" src="https://wide.b3log.org/playground/bb726be3044fa13b82393d67a383f8f8.go" width="99%" height="600"></iframe>
理论题输出:
```
i: 0 发出: {[0 1 2 3 15 16 17 18 0]}
i: 1 发出: {[0 1 2 1]}
i: 2 发出: {[0 1 2 2]}
i: 3 发出: {[0 1 2 3]}
i: 3 收到信息 {[0 1 2 3]}
i: 0 收到信息 {[0 1 2 3 15 16 17 18 0]}
i: 2 收到信息 {[0 1 2 2]}
i: 1 收到信息 {[0 1 2 1]}
```
实际输出:
```
i: 0 发出: {[0 1 2 3 15 16 17 18 0]}
i: 1 发出: {[0 1 2 1]}
i: 2 发出: {[0 1 2 2]}
i: 3 发出: {[0 1 2 3]}
i: 3 收到信息 {[0 1 2 3]}
i: 0 收到信息 {[0 1 2 3 15 16 17 18 0]}
i: 2 收到信息 {[0 1 2 3]}
i: 1 收到信息 {[0 1 2 3]}
```
为什么除了i=0,收到的信息是对的,i=1,i=2,i=3,应该收到的信息都不一样,为什么是一样的,
更多评论