package main
import"fmt"funcsum2(rc chanint, a []int){iflen(a)==1{
rc <- a[0]}elseiflen(a)==2{
rc <- a[0]+ a[1]}else{
cc :=make(chanint)gosum2(cc, a[1:])
rc <- a[0]+<-cc
}}funcsum(rc chanint, a ...int){gosum2(rc, a)}funcmain(){
ac :=make(chanint)gosum(ac,1,2,3,4,5,6,7,8,9)
result :=<-ac
fmt.Println(result)}
同步
package main
import("fmt""strconv""time")funccounter(name string, count *int, local chanint, next chanint){for;;*count++{<-local
fmt.Println(name +" : "+ strconv.FormatInt(int64(*count),10))
next <-0}}funcmain(){var count int=1
ac :=make(chanint)
bc :=make(chanint)
cc :=make(chanint)gocounter("a",&count, ac, bc)gocounter("b",&count, bc, cc)gocounter("c",&count, cc, ac)
ac<-0
time.Sleep(5)}