mirror of
https://github.com/golang/go
synced 2024-11-02 11:50:30 +00:00
spec: allow conversion from slice to array ptr
Implementation follows in subsequent changes. Updates #395 Change-Id: Ic97ee822805e4c236fdd9d224e776cb2ae62c817 Reviewed-on: https://go-review.googlesource.com/c/go/+/216424 Trust: Josh Bleecher Snyder <josharian@gmail.com> Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> Reviewed-by: Matthew Dempsky <mdempsky@google.com> Reviewed-by: Robert Griesemer <gri@golang.org> Reviewed-by: Rob Pike <r@golang.org>
This commit is contained in:
parent
e12b0afa54
commit
1c268431f4
1 changed files with 23 additions and 1 deletions
|
@ -1,6 +1,6 @@
|
||||||
<!--{
|
<!--{
|
||||||
"Title": "The Go Programming Language Specification",
|
"Title": "The Go Programming Language Specification",
|
||||||
"Subtitle": "Version of Mar 16, 2021",
|
"Subtitle": "Version of Apr 20, 2021",
|
||||||
"Path": "/ref/spec"
|
"Path": "/ref/spec"
|
||||||
}-->
|
}-->
|
||||||
|
|
||||||
|
@ -4164,6 +4164,10 @@ in any of these cases:
|
||||||
<li>
|
<li>
|
||||||
<code>x</code> is a string and <code>T</code> is a slice of bytes or runes.
|
<code>x</code> is a string and <code>T</code> is a slice of bytes or runes.
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
<code>x</code> is a slice, <code>T</code> is a pointer to an array,
|
||||||
|
and the slice and array types have <a href="#Type_identity">identical</a> element types.
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
|
@ -4314,6 +4318,24 @@ MyRunes("白鵬翔") // []rune{0x767d, 0x9d6c, 0x7fd4}
|
||||||
</li>
|
</li>
|
||||||
</ol>
|
</ol>
|
||||||
|
|
||||||
|
<h4 id="Conversions_from_slice_to_array_pointer">Conversions from slice to array pointer</h4>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Converting a slice to an array pointer yields a pointer to the underlying array of the slice.
|
||||||
|
If the <a href="#Length_and_capacity">length</a> of the slice is less than the length of the array,
|
||||||
|
a <a href="#Run_time_panics">run-time panic<a/> occurs.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
s := make([]byte, 2, 4)
|
||||||
|
s0 := (*[0]byte)(s) // s0 != nil
|
||||||
|
s2 := (*[2]byte)(s) // &s2[0] == &s[0]
|
||||||
|
s4 := (*[4]byte)(s) // panics: len([4]byte) > len(s)
|
||||||
|
|
||||||
|
var t []string
|
||||||
|
t0 := (*[0]string)(t) // t0 == nil
|
||||||
|
t1 := (*[1]string)(t) // panics: len([1]string) > len(s)
|
||||||
|
</pre>
|
||||||
|
|
||||||
<h3 id="Constant_expressions">Constant expressions</h3>
|
<h3 id="Constant_expressions">Constant expressions</h3>
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue