Permalink
Cannot retrieve contributors at this time
Fetching contributors…
| // Copyright © 2016 Alan A. A. Donovan & Brian W. Kernighan. | |
| // License: https://creativecommons.org/licenses/by-nc-sa/4.0/ | |
| // See page 106. | |
| // Embed demonstrates basic struct embedding. | |
| package main | |
| import "fmt" | |
| type Point struct{ X, Y int } | |
| type Circle struct { | |
| Point | |
| Radius int | |
| } | |
| type Wheel struct { | |
| Circle | |
| Spokes int | |
| } | |
| func main() { | |
| var w Wheel | |
| //!+ | |
| w = Wheel{Circle{Point{8, 8}, 5}, 20} | |
| w = Wheel{ | |
| Circle: Circle{ | |
| Point: Point{X: 8, Y: 8}, | |
| Radius: 5, | |
| }, | |
| Spokes: 20, // NOTE: trailing comma necessary here (and at Radius) | |
| } | |
| fmt.Printf("%#v\n", w) | |
| // Output: | |
| // Wheel{Circle:Circle{Point:Point{X:8, Y:8}, Radius:5}, Spokes:20} | |
| w.X = 42 | |
| fmt.Printf("%#v\n", w) | |
| // Output: | |
| // Wheel{Circle:Circle{Point:Point{X:42, Y:8}, Radius:5}, Spokes:20} | |
| //!- | |
| } |