I've used weak references in C# before so was happy to discover they were added to Go. The article gives a good example of use: allowing efficient object sharing between goroutines without reference counting. I used this to implement an object cache of expensive-to-deserialize objects in a similar way.