1
0
mirror of https://github.com/golang/go synced 2024-11-21 22:44:40 -07:00

Expand section on compound literals.

R=ken,gri
DELTA=31  (22 added, 0 deleted, 9 changed)
OCL=13351
CL=13362
This commit is contained in:
Rob Pike 2008-07-22 15:23:06 -07:00
parent c1f5eda7a2
commit 220edc48da

View File

@ -678,15 +678,37 @@ structure.
}
Compound Literals
Composite Literals
----
Literals for compound data structures consist of the type of the constant
followed by a parenthesized expression list. In effect, they are a
conversion from expression list to compound value.
Literals for composite data structures consist of the type of the value
followed by a parenthesized expression list. In appearance, they are a
conversion from expression list to composite value.
TODO: Needs to be updated.
Structure literals follow this form directly. Given
type Rat struct { num, den int };
type Num struct { r Rat, f float, s string };
we can write
pi := Num(Rat(22,7), 3.14159, "pi")
For array literals, if the size is present the constructed array has that many
elements; trailing elements are given the approprate zero value for that type.
If it is absent, the size of the array is the number of elements. It is an error
if a specified size is less than the number of elements in the expression list.
primes := [6]int(2, 3, 5, 7, 9, 11)
weekdays := []string("mon", "tue", "wed", "thu", "fri", "sat", "sun")
Map literals are similar except the elements of the expression list are
key-value pairs separated by a colon:
m := map[string]int("good":0, "bad":1, "indifferent": 7)
TODO: helper syntax for nested arrays etc? (avoids repeating types but
complicates the spec needlessly.)
Pointer types
----