Commit df674ffb authored by Robert Griesemer's avatar Robert Griesemer

go spec: clarification of make arguments,

specification of runtime exceptions for
make and division by zero

R=r, rsc, ken2, iant
CC=golang-dev
https://golang.org/cl/1081041
parent a3a0a5fd
<!-- title The Go Programming Language Specification --> <!-- title The Go Programming Language Specification -->
<!-- subtitle Version of March 25, 2010 --> <!-- subtitle Version of May 4, 2010 -->
<!-- <!--
Todo Todo
...@@ -2869,7 +2869,6 @@ For integer values, <code>/</code> and <code>%</code> satisfy the following rela ...@@ -2869,7 +2869,6 @@ For integer values, <code>/</code> and <code>%</code> satisfy the following rela
<p> <p>
with <code>(a / b)</code> truncated towards zero. with <code>(a / b)</code> truncated towards zero.
Examples:
</p> </p>
<pre> <pre>
...@@ -2881,6 +2880,7 @@ Examples: ...@@ -2881,6 +2880,7 @@ Examples:
</pre> </pre>
<p> <p>
If the divisor is zero, a <a href="#Run_time_panics">run-time panic</a> occurs.
If the dividend is positive and the divisor is a constant power of 2, If the dividend is positive and the divisor is a constant power of 2,
the division may be replaced by a right shift, and computing the remainder may the division may be replaced by a right shift, and computing the remainder may
be replaced by a bitwise "and" operation: be replaced by a bitwise "and" operation:
...@@ -2921,6 +2921,9 @@ follows: ...@@ -2921,6 +2921,9 @@ follows:
For floating-point numbers, For floating-point numbers,
<code>+x</code> is the same as <code>x</code>, <code>+x</code> is the same as <code>x</code>,
while <code>-x</code> is the negation of <code>x</code>. while <code>-x</code> is the negation of <code>x</code>.
The result of a floating-point division by zero is not specified beyond the
IEEE-754 standard; whether a <a href="#Run_time_panics">run-time panic</a>
occurs is implementation-specific.
</p> </p>
<h3 id="Integer_overflow">Integer overflow</h3> <h3 id="Integer_overflow">Integer overflow</h3>
...@@ -4421,24 +4424,24 @@ The memory is initialized as described in the section on initial values ...@@ -4421,24 +4424,24 @@ The memory is initialized as described in the section on initial values
</p> </p>
<pre class="grammar"> <pre class="grammar">
make(T [, optional list of expressions]) Call Type T Result
</pre>
<p> make(T, n) slice slice of type T with length n and capacity n
For instance make(T, n, m) slice slice of type T with length n and capacity m
</p>
<pre> make(T) map map of type T
make(map[string] int) make(T, n) map map of type T with initial space for n elements
make(T) channel synchronous channel of type T
make(T, n) channel asynchronous channel of type T, buffer size n
</pre> </pre>
<p>
creates a new map value and initializes it to an empty map.
</p>
<p> <p>
The parameters affect sizes for allocating slices, maps, and The arguments <code>n</code> and <code>m</code> must be of integer type.
buffered channels: A <a href="#Run_time_panics">run-time panic</a> occurs if <code>n</code>
is negative or larger than <code>m</code>, or if <code>n</code> or
<code>m</code> cannot be represented by an <code>int</code>.
</p> </p>
<pre> <pre>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment