The documentation states that *Key is immutable, but what prevents somebody 
from writing this:

key := newKey(context, "Entity", "", 123, nil)
....
*key = *someOtherKey  // The key referenced by 'key' has now changed 
violating immutability.
...
*key = Key{}

Even more grievous, would be this.

parentKey := newKey(context, "Parent", "", 456, nil)
key := newKey(context, "Entity", "", 123, parentKey)

*parentKey = *someOtherKey  // Also modifies the key that 'key' references 
as a side effect!

In my experience raw reference types in go such as pointers, slices, or 
maps can make no guarantees regarding immutability.

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/HJTW6OpGKNEJ.
To post to this group, send email to google-appengine@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.

Reply via email to