1
0
mirror of https://github.com/golang/go synced 2024-11-26 10:18:12 -07:00

spec, unsafe: clarify unsafe.Slice docs

For #19367

Change-Id: If0ff8ddba3b6b48e2e198cf3653e73284c7572a3
Reviewed-on: https://go-review.googlesource.com/c/go/+/332409
Trust: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
Reviewed-by: Robert Griesemer <gri@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
This commit is contained in:
Ian Lance Taylor 2021-07-01 16:52:59 -07:00
parent 6125d0c426
commit 743f03eeb0
2 changed files with 9 additions and 5 deletions

View File

@ -1,6 +1,6 @@
<!--{
"Title": "The Go Programming Language Specification",
"Subtitle": "Version of Jun 28, 2021",
"Subtitle": "Version of Jul 1, 2021",
"Path": "/ref/spec"
}-->
@ -6782,7 +6782,8 @@ The rules for <a href="/pkg/unsafe#Pointer">valid uses</a> of <code>Pointer</cod
<p>
The function <code>Slice</code> returns a slice whose underlying array starts at <code>ptr</code>
and whose length and capacity are <code>len</code>:
and whose length and capacity are <code>len</code>.
<code>Slice(ptr, len)</code> is equivalent to
</p>
<pre>
@ -6790,7 +6791,8 @@ and whose length and capacity are <code>len</code>:
</pre>
<p>
As a special case, if <code>ptr</code> is <code>nil</code> and <code>len</code> is zero,
except that, as a special case, if <code>ptr</code>
is <code>nil</code> and <code>len</code> is zero,
<code>Slice</code> returns <code>nil</code>.
</p>

View File

@ -217,11 +217,13 @@ func Alignof(x ArbitraryType) uintptr
func Add(ptr Pointer, len IntegerType) Pointer
// The function Slice returns a slice whose underlying array starts at ptr
// and whose length and capacity are len:
// and whose length and capacity are len.
// Slice(ptr, len) is equivalent to
//
// (*[len]ArbitraryType)(unsafe.Pointer(ptr))[:]
//
// As a special case, if ptr is nil and len is zero, Slice returns nil.
// except that, as a special case, if ptr is nil and len is zero,
// Slice returns nil.
//
// The len argument must be of integer type or an untyped constant.
// A constant len argument must be non-negative and representable by a value of type int;