1
0
mirror of https://github.com/golang/go synced 2024-11-21 14:44:40 -07:00

Clarify parsing of channel types.

R=r, rsc
CC=golang-dev
https://golang.org/cl/194091
This commit is contained in:
Robert Griesemer 2010-01-27 09:35:39 -08:00
parent 2a01d72878
commit 1c369bd55f

View File

@ -1107,6 +1107,19 @@ SendChannel = "chan" "<-" ElementType .
RecvChannel = "<-" "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
@ -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>