From: Robert Griesemer
Date: Fri, 8 May 2009 17:25:06 +0000 (-0700)
Subject: - document string([]int{...}) conversion
X-Git-Tag: weekly.2009-11-06~1684
X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=1a304e1d93cef13b61b2ebd4229586fab344ed0d;p=gostls13.git
- document string([]int{...}) conversion
- cleanup of open issues section
R=r
DELTA=31 (12 added, 9 deleted, 10 changed)
OCL=28450
CL=28513
---
diff --git a/doc/go_spec.html b/doc/go_spec.html
index d52d050cd8..28a96549a9 100644
--- a/doc/go_spec.html
+++ b/doc/go_spec.html
@@ -7,24 +7,15 @@ Open issues:
- declaration "type T S" strips methods of S. why/why not?
- no mechanism to declare a local type name: type T P.T
-
Todo's:
[ ] document illegality of package-external tuple assignments to structs
w/ private fields: P.T(1, 2) illegal since same as P.T(a: 1, b: 2) for
a T struct { a b int }.
[ ] should probably write something about evaluation order of statements even
though obvious
-[ ] string conversion: string([]int{}) vs string(int) conversion. Former is
- "inverse" of string range iteration.
-[ ] do we need explicit channel conversion (to change channel direction)?
-
-
-Wish list:
-[ ] enum symbols that are not mixable with ints or some other mechanism
- (requirement that basic type aliases need conversion for compatibility)
-[ ] Helper syntax for composite types: allow names/keys/indices for
- structs/maps/arrays
-[ ] built-in assert() ("conditional panic") (gri)
+[ ] document new assignment rules (for named types on either side of an
+ assignment, the types must be identical)
+[ ] document T.m mechanism to obtain a function from a method
-->
@@ -3783,7 +3774,8 @@ The following conversion rules apply:
-
-1) Between equal types. The conversion always succeeds.
+1) Between equal types (§Type equality and identity).
+The conversion always succeeds.
-
2) Between integer types. If the value is a signed quantity, it is
@@ -3800,7 +3792,7 @@ always succeeds but the value may be a NaN or other problematic
result. TODO: clarify?
-
-4) Strings permit two special conversions.
+4) Strings permit three special conversions:
-
4a) Converting an integer value yields a string containing the UTF-8
@@ -3812,11 +3804,20 @@ string(0x65e5) // "\u65e5"
-
-4b) Converting a slice of bytes yields a string whose successive
-bytes are those of the slice.
+4b) Converting a slice of integers yields a string that is the
+concatenation of the individual integers converted to strings.
+If the slice value is
nil
, the result is the empty string.
+
+string([]int{0x65e5, 0x672c, 0x8a9e}) // "\u65e5\u672c\u8a9e"
+
+
+-
+4c) Converting a slice of bytes yields a string whose successive
+bytes are those of the slice. If the slice value is
nil
,
+the result is the empty string.
-string([]byte{'h', 'e', 'l', 'l', 'o'}) // "hello"
+string([]byte{'h', 'e', 'l', 'l', 'o'}) // "hello"
@@ -4307,6 +4308,8 @@ Implementation does not honor the restriction on goto statements and targets (no
cap() does not work on maps or chans.
len() does not work on chans.
+
+string([]int{...}) conversion is not yet implemented.