Lots of good material here - this is probably more in depth than is required for a beginner programmer (IMO), and Go does a good job of hiding the complexity most of the time, but it is useful to understand this stuff if you're using pointers. I do think you can write consistent and readable code in Go without understanding the behaviour language to this level of detail though as long as you grasp what a pointer is (a reference not a value).