From: Rob Pike Date: Tue, 22 Jul 2008 22:23:06 +0000 (-0700) Subject: Expand section on compound literals. X-Git-Tag: weekly.2009-11-06~3446 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=220edc48da3553d77da2bcb88b59259cc20f4457;p=gostls13.git Expand section on compound literals. R=ken,gri DELTA=31 (22 added, 0 deleted, 9 changed) OCL=13351 CL=13362 --- diff --git a/doc/go_lang.txt b/doc/go_lang.txt index 2cede5e8d3..1234651009 100644 --- a/doc/go_lang.txt +++ b/doc/go_lang.txt @@ -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 ----