Spaces:
Running
Running
<html> | |
<head> | |
<meta charset="utf-8"> | |
<title>CodeMirror: Go mode</title> | |
<link rel="stylesheet" href="../../lib/codemirror.css"> | |
<link rel="stylesheet" href="../../theme/elegant.css"> | |
<script src="../../lib/codemirror.js"></script> | |
<script src="../../addon/edit/matchbrackets.js"></script> | |
<script src="go.js"></script> | |
<link rel="stylesheet" href="../../doc/docs.css"> | |
<style>.CodeMirror {border:1px solid #999; background:#ffc}</style> | |
</head> | |
<body> | |
<h1>CodeMirror: Go mode</h1> | |
<form><textarea id="code" name="code"> | |
// Prime Sieve in Go. | |
// Taken from the Go specification. | |
// Copyright © The Go Authors. | |
package main | |
import "fmt" | |
// Send the sequence 2, 3, 4, ... to channel 'ch'. | |
func generate(ch chan<- int) { | |
for i := 2; ; i++ { | |
ch <- i // Send 'i' to channel 'ch' | |
} | |
} | |
// Copy the values from channel 'src' to channel 'dst', | |
// removing those divisible by 'prime'. | |
func filter(src <-chan int, dst chan<- int, prime int) { | |
for i := range src { // Loop over values received from 'src'. | |
if i%prime != 0 { | |
dst <- i // Send 'i' to channel 'dst'. | |
} | |
} | |
} | |
// The prime sieve: Daisy-chain filter processes together. | |
func sieve() { | |
ch := make(chan int) // Create a new channel. | |
go generate(ch) // Start generate() as a subprocess. | |
for { | |
prime := <-ch | |
fmt.Print(prime, "\n") | |
ch1 := make(chan int) | |
go filter(ch, ch1, prime) | |
ch = ch1 | |
} | |
} | |
func main() { | |
sieve() | |
} | |
</textarea></form> | |
<script> | |
var editor = CodeMirror.fromTextArea(document.getElementById("code"), { | |
theme: "elegant", | |
matchBrackets: true, | |
indentUnit: 8, | |
tabSize: 8, | |
indentWithTabs: true, | |
mode: "text/x-go" | |
}); | |
</script> | |
<p><strong>MIME type:</strong> <code>text/x-go</code></p> | |
</body> | |
</html> | |