]> Cypherpunks repositories - gostls13.git/commitdiff
Require names for return values for functions with complex return types.
authorRob Pike <r@golang.org>
Thu, 1 May 2008 07:01:45 +0000 (00:01 -0700)
committerRob Pike <r@golang.org>
Thu, 1 May 2008 07:01:45 +0000 (00:01 -0700)
SVN=117346

doc/go_lang.txt
src/lib/math/sys.go
src/lib/sys.go

index da48a8bfbefc9ce5d1489670f7973139e0a7ae6e..26ffbb2c03c01d754eba36febfbe87677b8274a8 100644 (file)
@@ -1461,12 +1461,18 @@ explicitly list the return value or values in the return statement:
     return 2;
   }
 
-  func complex_f1() (float, float) {
+A function may return multiple values.
+The syntax of the return clause in that case is the same as
+that of a parameter list; in particular, names must be provided for
+the elements of the return value.
+
+  func complex_f1() (re float, im float) {
     return -7.0, -4.0;
   }
 
-The second is to provide names for the return values and assign them
-explicitly in the function; the return statement will then provide no
+The second method to return values
+is to use those names within the function as variables
+to be assigned explicitly; the return statement will then provide no
 values:
 
   func complex_f2() (re float, im float) {
@@ -1475,14 +1481,6 @@ values:
     return;
   }
 
-It is legal to name the return values in the declaration even if the
-first form of return statement is used:
-
-  func complex_f2() (re float, im float) {
-    return 7.0, 4.0;
-  }
-
-
 If statements
 ----
 
@@ -1817,5 +1815,3 @@ TODO
 - TODO: type switch?
 - TODO: words about slices
 - TODO: I (gri) would like to say that sizeof(int) == sizeof(pointer), always.
-- TODO: when are two types equal? consider 
-       func iterate(f *func(int, interface{}), arg interface{})
index 3f7ee232ad701341b28644607ddac01b0092ecb5..41356cebaa42e50cecdc028cb61e134f84df0fd7 100644 (file)
@@ -4,9 +4,9 @@
 
 package sys
 
-func   modf(a double) (double, double);
-func   frexp(a double) (int, double);
-func   ldexp(double, int) double;
+func   modf(a double) (x double, y double);
+func   frexp(a double) (e int, m double);
+func   ldexp(f double, e int) double;
 
 func   Inf(n int) double;
 func   NaN() double;
index eddfd1fad2c854e0e09167426370b0036bb5be48..01c11356050342d2f5438e9f3f8d88212575bda7 100644 (file)
@@ -4,9 +4,9 @@
 
 package sys
 
-func   modf(a double) (double, double);
-func   frexp(a double) (int, double);
-func   ldexp(double, int) double;
+func   modf(a double) (x double, y double);
+func   frexp(a double) (e int, m double);
+func   ldexp(f double, e int) double;
 
 func   Inf(n int) double;
 func   NaN() double;