背景
跟着老男孩第五期学go,老师的设计是使用结构体,我捣鼓能不能不用结构体。结果很多问题。做个记录。
其实主要想不明白,channel是引用类型,为什么还会有指针的channel类型。
var a = make(chan *int)
var b = make(chan * bool)
代码
package main
import (
"fmt"
"math/rand"
"sync"
"time"
)
var wg sync.WaitGroup
var t1 = make(chan int, 200)
var t2 = make(chan int, 200)
func sc(a chan<- int) {
defer wg.Done()
for i := 0; i < 10; i++ {
a <- rand.Int()
// fmt.Println("js inside:", a)
time.Sleep(time.Millisecond * 1000)
}
}
func js(ch1 <-chan int, ch2 chan<- int) {
defer wg.Done()
n := <-ch1
sum := 0
for n > 0 {
sum += n % 10
n = n / 10
}
ch2 <- sum
}
func main() {
wg.Add(2)
go sc(t1)
// wg.Add(24)
// for i := 0; i < 24; i++ {
// go js(t1, t2)
// }
go js(t1, t2)
wg.Wait()
for a := range t2 {
fmt.Println("outside:", a)
// for b := range t1 {
// fmt.Println("outside:", b, a)
// }
}
}