From e1e7619f019cd01386172536ba7caab9de7a51a3 Mon Sep 17 00:00:00 2001 From: Robert Griesemer Date: Fri, 25 Sep 2009 14:11:03 -0700 Subject: [PATCH] - fixed sieve.go example (channel directions were wrong) - cosmetic adjustments R=r DELTA=30 (0 added, 0 deleted, 30 changed) OCL=35010 CL=35012 --- doc/go_spec.html | 60 ++++++++++++++++++++++++------------------------ 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/doc/go_spec.html b/doc/go_spec.html index 18aeb09f1c..c265661e10 100644 --- a/doc/go_spec.html +++ b/doc/go_spec.html @@ -416,7 +416,7 @@ the (possibly multi-byte) UTF-8 encoding of individual characters. Thus inside a string literal \377 and \xFF represent a single byte of value 0xFF=255, while ÿ, \u00FF, \U000000FF and \xc3\xbf represent -the two bytes 0xc3 0xbf of the UTF-8 encoding of character +the two bytes 0xc3 0xbf of the UTF-8 encoding of character U+00FF.

@@ -1095,8 +1095,8 @@ to receive. This constraint is called a channel's direction; either

-chan T         // can be used to send and receive values of type T
-chan <- float  // can only be used to send floats
+chan T            // can be used to send and receive values of type T
+chan<- float   // can only be used to send floats
 <-chan int     // can only be used to receive ints
 
@@ -2796,7 +2796,7 @@ a channel and a value (expression):

-ch <- 3
+ch <- 3
 

@@ -2817,10 +2817,10 @@ These two examples are equivalent:

-ok := ch <- 3;
+ok := ch <- 3;
 if ok { print("sent") } else { print("not sent") }
 
-if ch <- 3 { print("sent") } else { print("not sent") }
+if ch <- 3 { print("sent") } else { print("not sent") }
 

@@ -2836,7 +2836,7 @@ is the element type of the channel.

-<-ch
+<-ch
 

@@ -2847,10 +2847,10 @@ discarded.

-v1 := <-ch
-v2 = <-ch
-f(<-ch)
-<-strobe  // wait until clock pulse
+v1 := <-ch
+v2 = <-ch
+f(<-ch)
+<-strobe  // wait until clock pulse
 

@@ -2858,9 +2858,9 @@ If a receive expression is used in an assignment or initialization of the form

-x, ok = <-ch
-x, ok := <-ch
-var x, ok = <-ch
+x, ok = <-ch
+x, ok := <-ch
+var x, ok = <-ch
 

@@ -3079,12 +3079,12 @@ order. Otherwise, the order of evaluation is unspecified. For example, in the assignment

-y[f()], ok = g(h(), i() + x[j()], <-c), k()
+y[f()], ok = g(h(), i() + x[j()], <-c), k()
 

the function calls and communication happen in the order f(), h(), i(), j(), -<-c, g(), and k(). +<-c, g(), and k(). However, the order of those events compared to the evaluation and indexing of x and the evaluation of y is not specified. @@ -3166,7 +3166,7 @@ ExpressionStmt = Expression .

 f(x+y)
-<-ch
+<-ch
 
@@ -3212,7 +3212,7 @@ or the blank identifier. x = 1 *p = f() a[i] = 23 -k = <-ch +k = <-ch

@@ -3648,7 +3648,7 @@ for the invoked function to complete.

 go Server()
-go func(ch chan <- bool) { for { sleep(10); ch <- true; }} (c)
+go func(ch chan<- bool) { for { sleep(10); ch <- true; }} (c)
 
@@ -4252,37 +4252,37 @@ package main import "fmt" // Send the sequence 2, 3, 4, ... to channel 'ch'. -func generate(ch chan <- int) { +func generate(ch chan<- int) { for i := 2; ; i++ { - ch <- i // Send 'i' to channel 'ch'. + ch <- i; // Send 'i' to channel 'ch'. } } // Copy the values from channel 'in' to channel 'out', // 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'. +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. + ch := make(chan int); // Create a new channel. + go generate(ch); // Start generate() as a subprocess. for { - prime := <-ch; + prime := <-ch; fmt.Print(prime, "\n"); ch1 := make(chan int); go filter(ch, ch1, prime); - ch = ch1 + ch = ch1; } } func main() { - sieve() + sieve(); } -- 2.48.1