50 lines
922 B
Go
50 lines
922 B
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"strings"
|
||
|
)
|
||
|
|
||
|
func simpleping() {
|
||
|
messages := make(chan string)
|
||
|
go func() {
|
||
|
messages <- "ping"
|
||
|
}()
|
||
|
msg := <-messages
|
||
|
fmt.Println(msg)
|
||
|
if msg == "ping" {
|
||
|
fmt.Println("pong")
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func snd(msgchan chan string, msgs []string) {
|
||
|
for i := 0; i < len(msgs); i++ {
|
||
|
msgchan <- msgs[i]
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func rcv(msgchan chan string) string {
|
||
|
var sentence []string
|
||
|
var msglen int = len(msgchan)
|
||
|
for v := range msgchan {
|
||
|
fmt.Println(len(sentence), sentence)
|
||
|
if len(sentence) == msglen-1 { // when we reach next to last in the array, do the last.
|
||
|
sentence = append(sentence, v)
|
||
|
break
|
||
|
} else {
|
||
|
sentence = append(sentence, v)
|
||
|
}
|
||
|
}
|
||
|
return strings.Join(sentence, " ")
|
||
|
}
|
||
|
|
||
|
func main() {
|
||
|
simpleping()
|
||
|
|
||
|
var words = []string{"buffered", "channel", "one", "two", "three", "four", "five", "six"}
|
||
|
msgchan := make(chan string, len(words))
|
||
|
snd(msgchan, words)
|
||
|
fmt.Println(rcv(msgchan))
|
||
|
|
||
|
}
|