aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Pike <r@golang.org>2011-04-27 09:59:27 -0700
committerRob Pike <r@golang.org>2011-04-27 09:59:27 -0700
commit2ccd20a646f3e6b46c4f3e779c3833071b735886 (patch)
tree9cf83cebed1933e92e1b5001bd12d6ab49ab8117
parent5eeaca12d36e7556054b7694a41787c67e7b309c (diff)
downloadgo-2ccd20a646f3e6b46c4f3e779c3833071b735886.tar.gz
go-2ccd20a646f3e6b46c4f3e779c3833071b735886.zip
tutorial: replace the forever loops with finite counts in sieve programs.
Fixes #1742. I hope. Also this picks up an update to go_tutorial.html that should already have happened. R=brainman, rsc, peterGo CC=golang-dev https://golang.org/cl/4452050
-rw-r--r--doc/go_tutorial.html52
-rw-r--r--doc/progs/sieve.go2
-rw-r--r--doc/progs/sieve1.go2
-rwxr-xr-xsrc/run.bash1
4 files changed, 29 insertions, 28 deletions
diff --git a/doc/go_tutorial.html b/doc/go_tutorial.html
index 4d9c63e158..c87254ecb3 100644
--- a/doc/go_tutorial.html
+++ b/doc/go_tutorial.html
@@ -741,26 +741,27 @@ Building on the <code>file</code> package, here's a simple version of the Unix u
24 case nr &gt; 0:
25 if nw, ew := file.Stdout.Write(buf[0:nr]); nw != nr {
26 fmt.Fprintf(os.Stderr, &quot;cat: error writing from %s: %s\n&quot;, f.String(), ew.String())
-27 }
-28 }
-29 }
-30 }
+27 os.Exit(1)
+28 }
+29 }
+30 }
+31 }
<p>
-32 func main() {
-33 flag.Parse() // Scans the arg list and sets up flags
-34 if flag.NArg() == 0 {
-35 cat(file.Stdin)
-36 }
-37 for i := 0; i &lt; flag.NArg(); i++ {
-38 f, err := file.Open(flag.Arg(i))
-39 if f == nil {
-40 fmt.Fprintf(os.Stderr, &quot;cat: can't open %s: error %s\n&quot;, flag.Arg(i), err)
-41 os.Exit(1)
-42 }
-43 cat(f)
-44 f.Close()
-45 }
-46 }
+33 func main() {
+34 flag.Parse() // Scans the arg list and sets up flags
+35 if flag.NArg() == 0 {
+36 cat(file.Stdin)
+37 }
+38 for i := 0; i &lt; flag.NArg(); i++ {
+39 f, err := file.Open(flag.Arg(i))
+40 if f == nil {
+41 fmt.Fprintf(os.Stderr, &quot;cat: can't open %s: error %s\n&quot;, flag.Arg(i), err)
+42 os.Exit(1)
+43 }
+44 cat(f)
+45 f.Close()
+46 }
+47 }
</pre>
<p>
By now this should be easy to follow, but the <code>switch</code> statement introduces some
@@ -858,10 +859,11 @@ and use it from within a mostly unchanged <code>cat()</code> function:
67 nw, ew := file.Stdout.Write(buf[0:nr])
68 if nw != nr {
69 fmt.Fprintf(os.Stderr, &quot;cat: error writing from %s: %s\n&quot;, r.String(), ew.String())
-70 }
-71 }
-72 }
-73 }
+70 os.Exit(1)
+71 }
+72 }
+73 }
+74 }
</pre>
<p>
(We could also do the wrapping in <code>main</code> and leave <code>cat()</code> mostly alone, except
@@ -1238,7 +1240,7 @@ together:
28 func main() {
29 ch := make(chan int) // Create a new channel.
30 go generate(ch) // Start generate() as a goroutine.
-31 for {
+31 for i := 0; i &lt; 100; i++ { // Print the first hundred primes.
32 prime := &lt;-ch
33 fmt.Println(prime)
34 ch1 := make(chan int)
@@ -1318,7 +1320,7 @@ Now <code>main</code>'s interface to the prime sieve is a channel of primes:
<pre> <!-- progs/sieve1.go /func.main/ /^}/ -->
46 func main() {
47 primes := sieve()
-48 for {
+48 for i := 0; i &lt; 100; i++ { // Print the first hundred primes.
49 fmt.Println(&lt;-primes)
50 }
51 }
diff --git a/doc/progs/sieve.go b/doc/progs/sieve.go
index fb649e0496..c7c3e78122 100644
--- a/doc/progs/sieve.go
+++ b/doc/progs/sieve.go
@@ -28,7 +28,7 @@ func filter(in, out chan int, prime int) {
func main() {
ch := make(chan int) // Create a new channel.
go generate(ch) // Start generate() as a goroutine.
- for {
+ for i := 0; i < 100; i++ { // Print the first hundred primes.
prime := <-ch
fmt.Println(prime)
ch1 := make(chan int)
diff --git a/doc/progs/sieve1.go b/doc/progs/sieve1.go
index 71468d06ec..e785e20355 100644
--- a/doc/progs/sieve1.go
+++ b/doc/progs/sieve1.go
@@ -45,7 +45,7 @@ func sieve() chan int {
func main() {
primes := sieve()
- for {
+ for i := 0; i < 100; i++ { // Print the first hundred primes.
fmt.Println(<-primes)
}
}
diff --git a/src/run.bash b/src/run.bash
index ccdbc1aa9c..bb3d06c45c 100755
--- a/src/run.bash
+++ b/src/run.bash
@@ -74,7 +74,6 @@ gomake clean
time gomake ogle
) || exit $?
-[ "$GOHOSTOS" == windows ] ||
(xcd ../doc/progs
time ./run
) || exit $?