Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
G
golang
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
go
golang
Commits
a9336355
Commit
a9336355
authored
Dec 09, 2011
by
Russ Cox
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
spec: var x = 'a' defaults to type rune
R=gri, r, r, adg, iant, ken CC=golang-dev
https://golang.org/cl/5444053
parent
136c04f7
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
33 additions
and
34 deletions
+33
-34
go_spec.html
doc/go_spec.html
+33
-34
No files found.
doc/go_spec.html
View file @
a9336355
<!-- title The Go Programming Language Specification -->
<!-- subtitle Version of December
5
, 2011 -->
<!-- subtitle Version of December
8
, 2011 -->
<!--
TODO
...
...
@@ -361,7 +361,7 @@ imaginary_lit = (decimals | float_lit) "i" .
<h3
id=
"Character_literals"
>
Character literals
</h3>
<p>
A character literal represents a
n
<a
href=
"#Constants"
>
integ
er constant
</a>
,
A character literal represents a
<a
href=
"#Constants"
>
charact
er constant
</a>
,
typically a Unicode code point, as one or more characters enclosed in single
quotes. Within the quotes, any character may appear except single
quote and newline. A single quoted character represents itself,
...
...
@@ -513,19 +513,22 @@ literal.
<h2
id=
"Constants"
>
Constants
</h2>
<p>
There are
<i>
boolean constants
</i>
,
<i>
integer constants
</i>
,
<p>
There are
<i>
boolean constants
</i>
,
<i>
character constants
</i>
,
<i>
integer constants
</i>
,
<i>
floating-point constants
</i>
,
<i>
complex constants
</i>
,
and
<i>
string constants
</i>
.
I
nteger, floating-point,
and
<i>
string constants
</i>
.
Character, i
nteger, floating-point,
and complex constants are
collectively called
<i>
numeric constants
</i>
.
</p>
<p>
A constant value is represented by an
A constant value is represented by a
<a
href=
"#Character_literals"
>
character
</a>
,
<a
href=
"#Integer_literals"
>
integer
</a>
,
<a
href=
"#Floating-point_literals"
>
floating-point
</a>
,
<a
href=
"#Imaginary_literals"
>
imaginary
</a>
,
<a
href=
"#Character_literals"
>
character
</a>
,
or
or
<a
href=
"#String_literals"
>
string
</a>
literal,
an identifier denoting a constant,
a
<a
href=
"#Constant_expressions"
>
constant expression
</a>
,
...
...
@@ -3412,14 +3415,12 @@ operands and are evaluated at compile-time.
<p>
Untyped boolean, numeric, and string constants may be used as operands
wherever it is legal to use an operand of boolean, numeric, or string type,
respectively. Except for shift operations, if the operands of a binary operation
are an untyped integer constant and an untyped floating-point constant,
the integer constant is converted to an untyped floating-point constant
(relevant for
<code>
/
</code>
and
<code>
%
</code>
).
Similarly, untyped integer or floating-point constants may be used as operands
wherever it is legal to use an operand of complex type;
the integer or floating point constant is converted to a
complex constant with a zero imaginary part.
respectively.
Except for shift operations, if the operands of a binary operation are
different kinds of untyped constants, the operation and result use
the kind that appears later in this list: integer, character, floating-point, complex.
For example, an untyped integer constant divided by an
untyped complex constant yields an untyped complex constant.
</p>
<p>
...
...
@@ -3435,32 +3436,30 @@ complex, or string constant).
</p>
<pre>
const a = 2 + 3.0 // a == 5.0 (floating-point constant)
const b = 15 / 4 // b == 3 (integer constant)
const c = 15 / 4.0 // c == 3.75 (floating-point constant)
const d = 1
<<
3.0 // d == 8 (integer constant)
const e = 1.0
<<
3 // e == 8 (integer constant)
const a = 2 + 3.0 // a == 5.0 (untyped floating-point constant)
const b = 15 / 4 // b == 3 (untyped integer constant)
const c = 15 / 4.0 // c == 3.75 (untyped floating-point constant)
const Θ float64 = 3/2 // Θ == 1.5 (type float64)
const d = 1
<<
3.0 // d == 8 (untyped integer constant)
const e = 1.0
<<
3 // e == 8 (untyped integer constant)
const f = int32(1)
<<
33 // f == 0 (type int32)
const g = float64(2)
>>
1 // illegal (float64(2) is a typed floating-point constant)
const h = "foo"
>
"bar" // h == true (type bool)
const j = 'w' + 1 // j == 'x' (untyped character constant)
const Σ = 1 - 0.707 // (untyped complex constant)
const Δ = Σ + 2.0e-4 // (untyped complex constant)
const Φ = iota*1i - 1/1i // (untyped complex constant)
</pre>
<p>
Imaginary literals are untyped complex constants (with zero real part)
and may be combined in binary
operations with untyped integer and floating-point constants; the
result is an untyped complex constant.
Complex constants are always constructed from
constant expressions involving imaginary
literals or constants derived from them, or calls of the built-in function
<a
href=
"#Complex_numbers"
><code>
complex
</code></a>
.
Applying the built-in function
<code>
complex
</code>
to untyped
integer, character, or floating-point constants yields
an untyped complex constant.
</p>
<pre>
const Σ = 1 - 0.707i
const Δ = Σ + 2.0e-4 - 1/1i
const Φ = iota * 1i
const iΓ = complex(0, Γ)
const ic = complex(0, c) // iΓ == 3.75i (untyped complex constant)
const iΘ = complex(0, Θ) // iΘ == 1.5i (type complex128)
</pre>
<p>
...
...
@@ -3758,10 +3757,10 @@ In assignments, each value must be
<a
href=
"#Assignability"
>
assignable
</a>
to the type of the
operand to which it is assigned. If an untyped
<a
href=
"#Constants"
>
constant
</a>
is assigned to a variable of interface type, the constant is
<a
href=
"#Conversions"
>
converted
</a>
to type
<code>
bool
</code>
,
<code>
int
</code>
,
<code>
float64
</code>
,
to type
<code>
bool
</code>
,
<code>
rune
</code>
,
<code>
int
</code>
,
<code>
float64
</code>
,
<code>
complex128
</code>
or
<code>
string
</code>
respectively, depending on whether the value is a boolean,
integer, floating-point,
complex, or string constant.
respectively, depending on whether the value is a boolean,
c
haracter, integer, floating-point, c
omplex, or string constant.
</p>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment