diff --git a/demo/kitchen-sink/demo.js b/demo/kitchen-sink/demo.js index 7a1bc33a..9d272bd6 100644 --- a/demo/kitchen-sink/demo.js +++ b/demo/kitchen-sink/demo.js @@ -93,6 +93,7 @@ var modes = [ new Mode("coldfusion", "ColdFusion", ["cfm"]), new Mode("csharp", "C#", ["cs"]), new Mode("css", "CSS", ["css"]), + new Mode("golang", "Go", ["go"]), new Mode("groovy", "Groovy", ["groovy"]), new Mode("haxe", "haXe", ["hx"]), new Mode("html", "HTML", ["html", "htm"]), @@ -261,6 +262,10 @@ var docs = [ new WrappedDoc( "pgsql", "pgSQL", require("ace/requirejs/text!./docs/pgsql.pgsql") + ), + new Doc( + "golang", "Go", + require("ace/requirejs/text!./docs/golang.go") ) ]; diff --git a/demo/kitchen-sink/docs/golang.go b/demo/kitchen-sink/docs/golang.go new file mode 100644 index 00000000..6b1298f0 --- /dev/null +++ b/demo/kitchen-sink/docs/golang.go @@ -0,0 +1,34 @@ +// Concurrent computation of pi. +// See http://goo.gl/ZuTZM. +// +// This demonstrates Go's ability to handle +// large numbers of concurrent processes. +// It is an unreasonable way to calculate pi. +package main + +import ( + "fmt" + "math" +) + +func main() { + fmt.Println(pi(5000)) +} + +// pi launches n goroutines to compute an +// approximation of pi. +func pi(n int) float64 { + ch := make(chan float64) + for k := 0; k <= n; k++ { + go term(ch, float64(k)) + } + f := 0.0 + for k := 0; k <= n; k++ { + f += <-ch + } + return f +} + +func term(ch chan float64, k float64) { + ch <- 4 * math.Pow(-1, k) / (2*k + 1) +}