Commit de544289 authored by Robert Griesemer's avatar Robert Griesemer

A small but powerful change in constant declarations. Proposal by ken

after some discussion about enums. Implementation should be trivial.
Wording in the doc should be improved, probably.

SVN=125946
parent ed9743dc
...@@ -4,7 +4,7 @@ The Go Programming Language (DRAFT) ...@@ -4,7 +4,7 @@ The Go Programming Language (DRAFT)
Robert Griesemer, Rob Pike, Ken Thompson Robert Griesemer, Rob Pike, Ken Thompson
---- ----
(July 1, 2008) (July 3, 2008)
This document is a semi-formal specification/proposal for a new This document is a semi-formal specification/proposal for a new
systems programming language. The document is under active systems programming language. The document is under active
...@@ -983,7 +983,7 @@ Const declarations ...@@ -983,7 +983,7 @@ Const declarations
A constant declaration gives a name to the value of a constant expression. A constant declaration gives a name to the value of a constant expression.
ConstDecl = "const" ( ConstSpec | "(" ConstSpecList [ ";" ] ")" ). ConstDecl = "const" ( ConstSpec | "(" ConstSpecList [ ";" ] ")" ).
ConstSpec = identifier [ Type ] "=" Expression . ConstSpec = identifier [ Type ] [ "=" Expression ] .
ConstSpecList = ConstSpec { ";" ConstSpec }. ConstSpecList = ConstSpec { ";" ConstSpec }.
const pi float = 3.14159265 const pi float = 3.14159265
...@@ -993,6 +993,23 @@ A constant declaration gives a name to the value of a constant expression. ...@@ -993,6 +993,23 @@ A constant declaration gives a name to the value of a constant expression.
two = 3 two = 3
) )
The constant expression may be omitted, in which case the expression is
the last expression used after the "const" keyword. If no such expression
exists, the constant expression cannot be omitted.
Together with the 'iota' constant generator this permits light-weight
declaration of ``enum'' values.
const (
illegal = iota;
eof;
ident;
string;
number;
)
TODO move/re-arrange section on iota.
Type declarations Type declarations
---- ----
...@@ -1453,6 +1470,7 @@ and integers. A library may be provided under restricted circumstances ...@@ -1453,6 +1470,7 @@ and integers. A library may be provided under restricted circumstances
to acccess this conversion in low-level code but it will not be available to acccess this conversion in low-level code but it will not be available
in general. in general.
The constant generator 'iota' The constant generator 'iota'
---- ----
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment