Mercurial > mercurial > hgweb_golang.cgi
view src/chan.go @ 64:ad5c30ee5cf1
horori: add manual.
author | pyon@macmini |
---|---|
date | Fri, 25 Dec 2020 20:48:01 +0900 |
parents | 05bdd37e3000 |
children |
line wrap: on
line source
package main import ( "fmt" "time" ) func main() { fmt.Println("- Channel Test with Fibonacci -") var t time.Time n, nfib := 0, 0 n, t = 25, time.Now() nfib = fib(n) fmt.Printf("n=%d nfib=%d [%v]\n", n, nfib, time.Since(t)) n, t = 45, time.Now() nfib = fib(n) fmt.Printf("n=%d nfib=%d [%v]\n", n, nfib, time.Since(t)) fmt.Println() fmt.Println("- Channel Test with Fibonacci #2 -") ch1 := make(chan int) ch2 := make(chan int) n, t = 45, time.Now() go func(n int) { nfib := fib(n) fmt.Printf("goroutine: n=%d nfib=%d [%v]\n", n, nfib, time.Since(t)) ch1 <- nfib }(n) n, t = 25, time.Now() go func(n int) { nfib := fib(n) fmt.Printf("goroutine: n=%d nfib=%d [%v]\n", n, nfib, time.Since(t)) ch2 <- nfib }(n) n, t = 35, time.Now() nfib = fib(n) fmt.Printf(" - : n=%d nfib=%d [%v]\n", n, nfib, time.Since(t)) <- ch1 <- ch2 n, t = 5, time.Now() nfib = fib(n) fmt.Printf(" - : n=%d nfib=%d [%v]\n", n, nfib, time.Since(t)) fmt.Println("- End -") } func fib(x int) int { if x < 2 { return x } return fib(x - 1) + fib(x - 2) }