From: Robert Griesemer Date: Fri, 24 Oct 2008 20:13:12 +0000 (-0700) Subject: Preparation for varargs: Proposal for syntax. X-Git-Tag: weekly.2009-11-06~2902 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=2bfa95741f32fec06ac314e2532bf25c8b0bf5f8;p=gostls13.git Preparation for varargs: Proposal for syntax. DELTA=11 (7 added, 0 deleted, 4 changed) OCL=17772 CL=17804 --- diff --git a/doc/go_spec.txt b/doc/go_spec.txt index 1e57b67a12..0e2f67fc58 100644 --- a/doc/go_spec.txt +++ b/doc/go_spec.txt @@ -4,7 +4,7 @@ The Go Programming Language Specification (DRAFT) Robert Griesemer, Rob Pike, Ken Thompson ---- -(October 23, 2008) +(October 24, 2008) This document is a semi-formal specification of the Go systems @@ -1269,7 +1269,7 @@ and result types. FunctionType = "(" [ ParameterList ] ")" [ Result ] . ParameterList = ParameterDecl { "," ParameterDecl } . - ParameterDecl = [ IdentifierList ] Type . + ParameterDecl = [ IdentifierList ] ( Type | "..." ) . Result = Type | "(" ParameterList ")" . In ParameterList, the parameter names (IdentifierList) either must all be @@ -1277,13 +1277,20 @@ present, or all be absent. If the parameters are named, each name stands for one parameter of the specified type. If the parameters are unnamed, each type stands for one parameter of that type. +For the last incoming parameter only, instead of a parameter type one +may write "...". The ellipsis indicates that the last parameter stands +for an arbitrary number of additional arguments of any type (including +no additional arguments). If the parameters are named, the identifier +list immediately preceding "..." must contain only one identifier (the +name of the last parameter). + () (x int) () int - (string) + (string, float, ...) (a, b int, z float) bool (a, b int, z float) (bool) - (a, b int, z float) (success bool) + (a, b int, z float, opt ...) (success bool) (int, int, float) (float, *[]int) A variable can hold only a pointer to a function, not a function value.