mirror of
https://github.com/golang/go
synced 2024-11-21 18:04:40 -07:00
specification of []int(string) and []byte(string).
also clarify other string conversions. R=rsc, iant, gri, ken2 CC=golang-dev https://golang.org/cl/207103
This commit is contained in:
parent
04d9c8853b
commit
1811fac7cb
@ -3227,33 +3227,60 @@ represent the value the conversion succeeds but the result value is
|
||||
implementation-dependent.
|
||||
</p>
|
||||
|
||||
<h4>Conversions to a string type</h4>
|
||||
<h4>Conversions to and from a string type</h4>
|
||||
|
||||
<ol>
|
||||
<li>
|
||||
Converting an integer value yields a string containing the UTF-8
|
||||
representation of the integer.
|
||||
Converting a signed or unsigned integer value to a string type yields a
|
||||
string containing the UTF-8 representation of the integer.
|
||||
Negative values are converted to <code>"\uFFFD"</code>.
|
||||
|
||||
<pre>
|
||||
string(0x65e5) // "\u65e5" == "日" == "\xe6\x97\xa5"
|
||||
string('a') // "a"
|
||||
string(-1) // "\ufffd" == "\xef\xbf\xbd "
|
||||
string(0xf8) // "\u00f8" == "ø" == "\xc3\xb8"
|
||||
type MyString string
|
||||
MyString(0x65e5) // "\u65e5" == "日" == "\xe6\x97\xa5"
|
||||
</pre>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
Converting a slice of integers yields a string that is the
|
||||
concatenation of the individual integers converted to strings.
|
||||
If the slice value is <code>nil</code>, the result is the empty string.
|
||||
Converting a value of type <code>[]byte</code> (or
|
||||
the equivalent <code>[]uint8</code>) to a string type yields a
|
||||
string whose successive bytes are the elements of the slice. If
|
||||
the slice value is <code>nil</code>, the result is the empty string.
|
||||
|
||||
<pre>
|
||||
string([]byte{'h', 'e', 'l', 'l', '\xc3', '\xb8'}) // "hellø"
|
||||
</pre>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
Converting a value of type <code>[]int</code> to a string type yields
|
||||
a string that is the concatenation of the individual integers
|
||||
converted to strings. If the slice value is <code>nil</code>, the
|
||||
result is the empty string.
|
||||
<pre>
|
||||
string([]int{0x767d, 0x9d6c, 0x7fd4}) // "\u767d\u9d6c\u7fd4" == "白鵬翔"
|
||||
</pre>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
Converting a slice of bytes yields a string whose successive
|
||||
bytes are those of the slice. If the slice value is <code>nil</code>,
|
||||
the result is the empty string.
|
||||
Converting a value of a string type to <code>[]byte</code> (or <code>[]uint8</code>)
|
||||
yields a slice whose successive elements are the bytes of the string.
|
||||
If the string is empty, the result is <code>[]byte(nil)</code>.
|
||||
|
||||
<pre>
|
||||
string([]byte{'h', 'e', 'l', 'l', 'o'}) // "hello"
|
||||
[]byte("hellø") // []byte{'h', 'e', 'l', 'l', '\xc3', '\xb8'}
|
||||
</pre>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
Converting a value of a string type to <code>[]int</code> yields a
|
||||
slice containing the individual Unicode code points of the string.
|
||||
If the string is empty, the result is <code>[]int(nil)</code>.
|
||||
<pre>
|
||||
[]int(MyString("白鵬翔")) // []int{0x767d, 0x9d6c, 0x7fd4}
|
||||
</pre>
|
||||
</li>
|
||||
</ol>
|
||||
@ -3847,7 +3874,7 @@ statement</a>. Function calls on the left hand side will be evaluated
|
||||
exactly once per iteration.
|
||||
</p>
|
||||
<p>
|
||||
For strings, the "range" clause iterates over the Unicode code points
|
||||
For a value of a string type, the "range" clause iterates over the Unicode code points
|
||||
in the string. On successive iterations, the index variable will be the
|
||||
index of the first byte of successive UTF-8-encoded code points in the string, and
|
||||
the second variable, of type <code>int</code>, will be the value of
|
||||
@ -4777,5 +4804,6 @@ The following minimal alignment properties are guaranteed:
|
||||
<ul>
|
||||
<li><span class="alert">Implementation does not honor the restriction on goto statements and targets (no intervening declarations).</span></li>
|
||||
<li><span class="alert">Method expressions are not implemented.</span></li>
|
||||
<li><span class="alert">Conversions from strings to <code>[]int</code> and <code>[]byte</code> are not implemented..</span></li>
|
||||
<li><span class="alert">Gccgo allows only one init() function per source file.</span></li>
|
||||
</ul>
|
||||
|
Loading…
Reference in New Issue
Block a user