]> Cypherpunks repositories - gostls13.git/commitdiff
fix naked < and > as reported by Peter Williams <>
authorRob Pike <r@golang.org>
Thu, 24 Dec 2009 20:13:14 +0000 (07:13 +1100)
committerRob Pike <r@golang.org>
Thu, 24 Dec 2009 20:13:14 +0000 (07:13 +1100)
(i thought these were legal in <pre> blocks)

R=rsc
CC=golang-dev, pwil3058
https://golang.org/cl/181055

doc/effective_go.html

index c9f1a125755f3dd5305db1fe328cad8e6ddb1c9c..2932709502331ad24f997222e395fc6745ece52d 100644 (file)
@@ -405,7 +405,7 @@ effects.  Write them like this
 </p>
 
 <pre>
-if i < f() {
+if i &lt; f() {
     g()
 }
 </pre>
@@ -413,7 +413,7 @@ if i < f() {
 not like this
 </p>
 <pre>
-if i < f()  // wrong!
+if i &lt; f()  // wrong!
 {           // wrong!
     g()
 }
@@ -444,7 +444,7 @@ and the bodies must always be brace-delimited.
 In Go a simple <code>if</code> looks like this:
 </p>
 <pre>
-if x > 0 {
+if x &gt; 0 {
     return y
 }
 </pre>
@@ -529,7 +529,7 @@ Short declarations make it easy to declare the index variable right in the loop.
 </p>
 <pre>
 sum := 0
-for i := 0; i < 10; i++ {
+for i := 0; i &lt; 10; i++ {
     sum += i
 }
 </pre>
@@ -573,7 +573,7 @@ you should use parallel assignment.
 </p>
 <pre>
 // Reverse a
-for i, j := 0, len(a)-1; i < j; i, j = i+1, j-1 {
+for i, j := 0, len(a)-1; i &lt; j; i, j = i+1, j-1 {
     a[i], a[j] = a[j], a[i]
 }
 </pre>
@@ -708,10 +708,10 @@ and the next position.
 
 <pre>
 func nextInt(b []byte, i int) (int, int) {
-    for ; i < len(b) &amp;&amp; !isDigit(b[i]); i++ {
+    for ; i &lt; len(b) &amp;&amp; !isDigit(b[i]); i++ {
     }
     x := 0
-    for ; i < len(b) &amp;&amp; isDigit(b[i]); i++ {
+    for ; i &lt; len(b) &amp;&amp; isDigit(b[i]); i++ {
         x = x*10 + int(b[i])-'0'
     }
     return x, i
@@ -723,7 +723,7 @@ You could use it to scan the numbers in an input array <code>a</code> like this:
 </p>
 
 <pre>
-    for i := 0; i < len(a); {
+    for i := 0; i &lt; len(a); {
         x, i = nextInt(a, i)
         fmt.Println(x)
     }
@@ -760,7 +760,7 @@ of <code>io.ReadFull</code> that uses them well:
 
 <pre>
 func ReadFull(r Reader, buf []byte) (n int, err os.Error) {
-    for len(buf) > 0 &amp;&amp; err == nil {
+    for len(buf) &gt; 0 &amp;&amp; err == nil {
         var nr int
         nr, err = r.Read(buf)
         n += nr
@@ -1044,7 +1044,7 @@ the moment, this snippet would also read the first 32 bytes of the buffer.
 <pre>
     var n int
     var err os.Error
-    for i := 0; i < 32; i++ {
+    for i := 0; i &lt; 32; i++ {
         nbytes, e := f.Read(buf[i:i+1])  // Read one byte.
         if nbytes == 0 || e != nil {
             err = e
@@ -1067,7 +1067,7 @@ resulting slice is returned.  The function uses the fact that
 <pre>
 func Append(slice, data[]byte) []byte {
     l := len(slice)
-    if l + len(data) > cap(slice) {  // reallocate
+    if l + len(data) &gt; cap(slice) {  // reallocate
         // Allocate double what's needed, for future growth.
         newSlice := make([]byte, (l+len(data))*2)
         // Copy data (could use bytes.Copy()).
@@ -1202,7 +1202,7 @@ do not take flags for signedness or size; instead, the printing routines use the
 type of the argument to decide these properties.
 </p>
 <pre>
-var x uint64 = 1<<64 - 1
+var x uint64 = 1&lt;&lt;64 - 1
 fmt.Printf("%d %x; %d %x\n", x, x, int64(x), int64(x))
 </pre>
 <p>
@@ -1355,7 +1355,7 @@ sets of values.
 type ByteSize float64
 const (
     _ = iota  // ignore first value by assigning to blank identifier
-    KB ByteSize = 1<<(10*iota)
+    KB ByteSize = 1&lt;&lt;(10*iota)
     MB
     GB
     TB
@@ -1371,17 +1371,17 @@ automatically for printing, even as part of a general type.
 <pre>
 func (b ByteSize) String() string {
     switch {
-    case b >= YB:
+    case b &gt;= YB:
         return fmt.Sprintf("%.2fYB", b/YB)
-    case b >= PB:
+    case b &gt;= PB:
         return fmt.Sprintf("%.2fPB", b/PB)
-    case b >= TB:
+    case b &gt;= TB:
         return fmt.Sprintf("%.2fTB", b/TB)
-    case b >= GB:
+    case b &gt;= GB:
         return fmt.Sprintf("%.2fGB", b/GB)
-    case b >= MB:
+    case b &gt;= MB:
         return fmt.Sprintf("%.2fMB", b/MB)
-    case b >= KB:
+    case b &gt;= KB:
         return fmt.Sprintf("%.2fKB", b/KB)
     }
     return fmt.Sprintf("%.2fB", b)
@@ -1539,7 +1539,7 @@ func (s Sequence) Len() int {
     return len(s)
 }
 func (s Sequence) Less(i, j int) bool {
-    return s[i] < s[j]
+    return s[i] &lt; s[j]
 }
 func (s Sequence) Swap(i, j int) {
     s[i], s[j] = s[j], s[i]
@@ -1550,7 +1550,7 @@ func (s Sequence) String() string {
     sort.Sort(s)
     str := "["
     for i, elem := range s {
-        if i > 0 {
+        if i &gt; 0 {
             str += " "
         }
         str += fmt.Sprint(elem)
@@ -1733,7 +1733,7 @@ has been visited?  Tie a channel to the web page.
 type Chan chan *http.Request
 
 func (ch Chan) ServeHTTP(c *http.Conn, req *http.Request) {
-    ch <- req
+    ch &lt;- req
     fmt.Fprint(c, "notification sent")
 }
 </pre>
@@ -2110,14 +2110,14 @@ simultaneous calls to <code>process</code>.
 var sem = make(chan int, MaxOutstanding)
 
 func handle(r *Request) {
-    sem <- 1    // Wait for active queue to drain.
+    sem &lt;- 1    // Wait for active queue to drain.
     process(r)  // May take a long time.
-    <-sem       // Done; enable next request to run.
+    &lt;-sem       // Done; enable next request to run.
 }
 
 func Serve(queue chan *Request) {
     for {
-        req := <-queue
+        req := &lt;-queue
         go handle(req)  // Don't wait for handle to finish.
     }
 }
@@ -2141,10 +2141,10 @@ func handle(queue chan *Request) {
 
 func Serve(clientRequests chan *clientRequests, quit chan bool) {
     // Start handlers
-    for i := 0; i < MaxOutstanding; i++ {
+    for i := 0; i &lt; MaxOutstanding; i++ {
         go handle(clientRequests)
     }
-    <-quit  // Wait to be told to exit.
+    &lt;-quit  // Wait to be told to exit.
 }
 </pre>
 
@@ -2182,9 +2182,9 @@ func sum(a []int) (s int) {
 
 request := &amp;Request{[]int{3, 4, 5}, sum, make(chan int)}
 // Send request
-clientRequests <- request
+clientRequests &lt;- request
 // Wait for response.
-fmt.Printf("answer: %d\n", <-request.resultChan)
+fmt.Printf("answer: %d\n", &lt;-request.resultChan)
 </pre>
 <p>
 On the server side, the handler function is the only thing that changes.
@@ -2192,7 +2192,7 @@ On the server side, the handler function is the only thing that changes.
 <pre>
 func handle(queue chan *Request) {
     for req := range queue {
-        req.resultChan <- req.f(req.args)
+        req.resultChan &lt;- req.f(req.args)
     }
 }
 </pre>
@@ -2219,10 +2219,10 @@ type Vector []float64
 
 // Apply the operation to v[i], v[i+1] ... up to v[n-1].
 func (v Vector) DoSome(i, n int, u Vector, c chan int) {
-    for ; i < n; i++ {
+    for ; i &lt; n; i++ {
         v[i] += u.Op(v[i])
     }
-    c <- 1    // signal that this piece is done
+    c &lt;- 1    // signal that this piece is done
 }
 </pre>
 <p>
@@ -2236,12 +2236,12 @@ const NCPU = 4  // number of CPU cores
 
 func (v Vector) DoAll(u Vector) {
     c := make(chan int, NCPU)  // Buffering optional but sensible.
-    for i := 0; i < NCPU; i++ {
+    for i := 0; i &lt; NCPU; i++ {
         go v.DoSome(i*len(v)/NCPU, (i+1)*len(v)/NCPU, u, c)
     }
     // Drain the channel.
-    for i := 0; i < NCPU; i++ {
-        <-c    // wait for one task to complete
+    for i := 0; i &lt; NCPU; i++ {
+        &lt;-c    // wait for one task to complete
     }
     // All done.
 }
@@ -2282,12 +2282,12 @@ var serverChan = make(chan *Buffer)
 
 func client() {
     for {
-        b, ok := <-freeList  // grab a buffer if available
+        b, ok := &lt;-freeList  // grab a buffer if available
         if !ok {              // if not, allocate a new one
             b = new(Buffer)
         }
         load(b)              // read next message from the net
-        serverChan <- b      // send to server
+        serverChan &lt;- b      // send to server
     }
 }
 </pre>
@@ -2298,9 +2298,9 @@ and returns the buffer to the free list.
 <pre>
 func server() {
     for {
-        b := <-serverChan    // wait for work
+        b := &lt;-serverChan    // wait for work
         process(b)
-        _ = freeList <- b    // reuse buffer if room
+        _ = freeList &lt;- b    // reuse buffer if room
     }
 }
 </pre>
@@ -2377,7 +2377,7 @@ field for recoverable failures.
 </p>
 
 <pre>
-for try := 0; try < 2; try++ {
+for try := 0; try &lt; 2; try++ {
     file, err = os.Open(filename, os.O_RDONLY, 0)
     if err == nil {
         return