From 833f7f1905bafb28574affc99056695c04390323 Mon Sep 17 00:00:00 2001 From: Patrick Simianer Date: Sun, 2 Apr 2017 22:50:34 +0200 Subject: go --- go/Makefile | 3 +++ go/channels.go | 38 ++++++++++++++++++++++++++++++++++++++ go/goroutines.go | 24 ++++++++++++++++++++++++ 3 files changed, 65 insertions(+) create mode 100644 go/Makefile create mode 100644 go/channels.go create mode 100644 go/goroutines.go diff --git a/go/Makefile b/go/Makefile new file mode 100644 index 0000000..80c6771 --- /dev/null +++ b/go/Makefile @@ -0,0 +1,3 @@ +%: %.go + go build $^ + diff --git a/go/channels.go b/go/channels.go new file mode 100644 index 0000000..03bcf68 --- /dev/null +++ b/go/channels.go @@ -0,0 +1,38 @@ +package main + +import ( + "fmt" + "time" +) + +func pinger(c chan<- string) { + for i := 0; ; i++ { + c <- "ping" + } +} + +func ponger(c chan string) { + for i := 0; ; i++ { + c <- "pong" + } +} + +func printer(c <-chan string) { + for { + msg := <- c + fmt.Println(msg) + time.Sleep(time.Second * 1) + } +} + +func main() { + var c chan string = make(chan string) + + go pinger(c) + go ponger(c) + go printer(c) + + var input string + fmt.Scanln(&input) +} + diff --git a/go/goroutines.go b/go/goroutines.go new file mode 100644 index 0000000..1eb1eb9 --- /dev/null +++ b/go/goroutines.go @@ -0,0 +1,24 @@ +package main + +import ( + "fmt" + "time" + "math/rand" +) + +func f(n int) { + for i := 0; i < 10; i++ { + fmt.Println(n, ":", i) + amt := time.Duration(rand.Intn(250)) + time.Sleep(time.Millisecond * amt) + } +} + +func main() { + for i := 0; i < 10; i++ { + go f(i) + } + var input string + fmt.Scanln(&input) +} + -- cgit v1.2.3