标签:pack Go语言 bool cti second line sum tin turn
pipeline.go
package pipeline
func LaunchPipeline(amount int) int {
firstCh := generator(amount)
secondCh := power(firstCh)
thirdCh := sum(secondCh)
result := <-thirdCh
return result
}
/*
func functionName(in <-chan int) <-chan int {
out := make(chan bool, 100)
go func() {
for v := range in {
//nothing
}
close(out)
}()
return out
}
*/
func generator(max int) <-chan int {
outChInt := make(chan int, 100)
go func() {
for i := 1; i <= max; i++ {
outChInt <- i
}
close(outChInt)
}()
return outChInt
}
func power(in <-chan int) <-chan int {
out := make(chan int, 100)
go func() {
for v := range in {
out <- v * v
}
close(out)
}()
return out
}
func sum(in <-chan int) <-chan int {
out := make(chan int, 100)
go func() {
var sum int
for v := range in {
sum += v
}
out <- sum
close(out)
}()
return out
}
pipeline_test.go
package pipeline
import "testing"
func TestLaunchPipeline(t *testing.T) {
tableTest := [][]int{
{3, 14},
{5, 55},
}
var res int
for _, test := range tableTest {
res = LaunchPipeline(test[0])
if res != test[1] {
t.Fatal()
}
t.Logf("%d == %d\n", res, test[1])
}
}

标签:pack Go语言 bool cti second line sum tin turn
原文地址:https://www.cnblogs.com/aguncn/p/11921552.html