The docs currently are imprecise about comparisons. This could lead users to believe that objects of the same type, allocated at the same address, could produce weak pointers that are equal to previously-created weak pointers. This is not the case. Weak pointers map to objects, not addresses. Update the documentation to state precisely that if two pointers do not compare equal, then two weak pointers created from those two pointers are guaranteed not to compare equal. Since a future pointer pointing to the same address is not comparable with a pointer produced *before* an object at that address has been reclaimed, this is sufficient to explain that weak pointers map 1:1 with object offsets, not addresses. (An object slot cannot be reused unless that slot is unreachable, so by construction, there's never an opportunity to compare an "old" and "new" pointer unless one uses unsafe tricks that violate the unsafe.Pointer rules.) Fixes #71381. Change-Id: I5509fd433cde013926d725694d480c697a8bc911 Reviewed-on: https://go-review.googlesource.com/c/go/+/643935 Reviewed-by: Carlos Amedee <carlos@golang.org> Auto-Submit: Michael Knyszek <mknyszek@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Filippo Valsorda <filippo@golang.org>
The Go Programming Language
Go is an open source programming language that makes it easy to build simple, reliable, and efficient software.
Gopher image by Renee French, licensed under Creative Commons 4.0 Attribution license.
Our canonical Git repository is located at https://go.googlesource.com/go. There is a mirror of the repository at https://github.com/golang/go.
Unless otherwise noted, the Go source files are distributed under the BSD-style license found in the LICENSE file.
Download and Install
Binary Distributions
Official binary distributions are available at https://go.dev/dl/.
After downloading a binary release, visit https://go.dev/doc/install for installation instructions.
Install From Source
If a binary distribution is not available for your combination of operating system and architecture, visit https://go.dev/doc/install/source for source installation instructions.
Contributing
Go is the work of thousands of contributors. We appreciate your help!
To contribute, please read the contribution guidelines at https://go.dev/doc/contribute.
Note that the Go project uses the issue tracker for bug reports and proposals only. See https://go.dev/wiki/Questions for a list of places to ask questions about the Go language.