This is a creation in Article, where the information may have evolved or changed.
Today, we will explain the process of Go language open.
PackageMainImport("FMT" "Time")varCChan intfuncMain () {c = Make(Chan int)GoWaiting ("Coffee",1)GoWaiting ("Tea",2) FMT. Println ("I,am Waiting")//time. Sleep (3 * time. Second)<-c <-c}funcWaiting (Wstring, the SECint) {time. Sleep (time. Duration (SEC) * time. Second) fmt. Println (W," is ready") C <-1}
If the process is more open, how to avoid to write more than the end of the process of the channel, let me give you an improved version:
PackageMainImport("FMT" "Time")varCChan intfuncMain () {c = Make(Chan int)GoWaiting ("Coffee",1)GoWaiting ("TEA1",2)GoWaiting ("TEA2",3)GoWaiting ("Tea3",4)GoWaiting ("TEA4",5)GoWaiting ("Tea5",6)GoWaiting ("Tea6",7) FMT. Println ("I,am Waiting")//time. Sleep (3 * time. Second)I: =0L for{Select{ Case<-c:i++ifi >6{ BreakL}}}}funcWaiting (Wstring, the SECint) {time. Sleep (time. Duration (SEC) * time. Second) fmt. Println (W," is ready") C <-1}