summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Griesemer <gri@golang.org>2010-01-27 09:35:39 -0800
committerRobert Griesemer <gri@golang.org>2010-01-27 09:35:39 -0800
commit94d870b20fa9c13e96cc5d4894497c4d8df35b95 (patch)
tree6c09f3ba106be136665436a8e896cb3ede4e4a04
parentda0f154cecf72a30fb2412aa018803208e80dde3 (diff)
downloadgolang-94d870b20fa9c13e96cc5d4894497c4d8df35b95.tar.gz
Clarify parsing of channel types.
R=r, rsc CC=golang-dev http://codereview.appspot.com/194091
-rw-r--r--doc/go_spec.html14
1 files changed, 13 insertions, 1 deletions
diff --git a/doc/go_spec.html b/doc/go_spec.html
index b5931c110..382387645 100644
--- a/doc/go_spec.html
+++ b/doc/go_spec.html
@@ -1108,6 +1108,19 @@ RecvChannel = "&lt;-" "chan" ElementType .
</pre>
<p>
+To avoid a parsing ambiguity in cases such as <code>chan&lt;- chan int</code>,
+the Channel production's ElementType cannot be a RecvChannel.
+To construct such a type, parenthesize the RecvChannel first.
+</p>
+
+<pre>
+chan&lt;- chan int // same as chan&lt;- (chan int)
+chan&lt;- &lt;-chan int // same as chan&lt;- (&lt;-chan int)
+&lt;-chan &lt;-chan int // same as &lt;-chan (&lt;-chan int)
+chan (&lt;-chan int)
+</pre>
+
+<p>
Upon creation, a channel can be used both to send and to receive values.
By conversion or assignment, a channel may be constrained only to send or
to receive. This constraint is called a channel's <i>direction</i>; either
@@ -1126,7 +1139,6 @@ value can be made using the built-in function <code>make</code>,
which takes the channel type and an optional capacity as arguments:
</p>
-
<pre>
make(chan int, 100)
</pre>