Go.dev is a companion website to golang.org. Golang.org is the home of the open source project and distribution, while go.dev is the hub for Go users providing centralized and curated resources from across the Go ecosystem.
{{gopher color: pink align: right
}} Go.dev provides:
Go.dev is currently in MVP status. We‘re proud of what we’ve built and excited to share it with the community. We hope you find value and joy in using go.dev. Go.dev only has a small portion of features we intend to build, and we are actively seeking feedback. If you have any ideas, suggestions or issues, please let us know.
Data for the site is downloaded from proxy.golang.org. We monitor the Go Module Index regularly for new packages to add to pkg.go.dev. If you don’t see a package on pkg.go.dev, you can add it by doing one of the following:
Visiting that page on pkg.go.dev, and clicking the “Request” button. For example:
https://pkg.go.dev/example.com/my/module
Making a request to proxy.golang.org for the module version, to any endpoint specified by the Module proxy protocol. For example:
https://proxy.golang.org/example.com/my/module/@v/v1.0.0.info
Downloading the package via the go command. For example:
GOPROXY=https://proxy.golang.org GO111MODULE=on go get example.com/my/module@v1.0.0
If you would like to hide versions of a module on pkg.go.dev, as well as from the go
command, you should retract them. Retracting a module version involves adding a retract
directive to your go.mod
file and publishing a new version. See the Go blog post New module changes in Go 1.16 and the modules reference for details.
Documentation is generated based on Go source code downloaded from the Go Module Mirror at proxy.golang.org/<module>/@v/<version>.zip
. New module versions are fetched from index.golang.org and added to pkg.go.dev site every few minutes.
The guidelines for writing documentation for the godoc tool apply to pkg.go.dev.
It’s important to write a good summary of the package in the first sentence of the package comment. The go.dev site indexes the first sentence and displays it in search results.
Most Go packages look and behave the same regardless of the machine architecture or operating system. But some have different documentation, even different exported symbols, for different architectures or OSes. Some packages may not even exist for some architectures.
Go calls an OS/architecture pair a “build context” and writes it with a slash, like linux/amd64
. You may also see the terms GOOS
and GOARCH
for the OS and architecture respectively, because those are the names of the environment variables that the go command uses. (See the go command documentation for more information.)
If a package exists at only one build context, pkg.go.dev displays that build context at the upper right corner of the documentation. For example, https://pkg.go.dev/syscall/js displays “js/wasm”.
If a package is different in different build contexts, then pkg.go.dev will display one by default and provide a dropdown control at the upper right so you can select a different one.
For packages that are the same across all build contexts, pkg.go.dev does not display any build context information.
Although there are many possible OS/architecture pairs, pkg.go.dev considers only a handful of them. So if a package only exists for unsupported build contexts, pkg.go.dev will not display documentation for it.
Most of the time, pkg.go.dev can determine the location of a package‘s source files, and provide links from symbols in the documentation to their definitions in the source. If your package’s source is not linked, try one of the following two approaches.
If pkg.go.dev finds a go-source
meta tag on your site that follows the specified format, it can often determine the right links, even though the format doesn't take versioning into account.
If that doesn‘t work, you will need to add your repo or code-hosting site to pkg.go.dev’s list of patterns (see Go Issue 40477 for context). Read about how to contribute to pkg.go.dev, then produce a CL that adds a pattern to the internal/source
package.
Pkg.go.dev surfaces details about Go packages and modules in order to help provide guidelines for best practices with Go.
Here are the details we surface:
Has go.mod file
Redistributable license
Tagged version
Stable version
The pkg.go.dev badge provides a way for Go users to learn about the pkg.go.dev page associated with a given Go package or module. You can create a badge using the badge generation tool. The tool will generate html and markdown snippets that you can use on your project website or in a README file.
You can add links to your README files and package documentation that will be shown on the right side of the pkg.go.dev page. For details, see this issue.
There are keyboard shortcuts for navigating package documentation pages. Type ‘?’ on a package page for help.
The pkg.go.dev bookmarklet navigates from pages on source code hosts, such as GitHub, Bitbucket, Launchpad etc., to the package documentation. To install the bookmarklet, click and drag the following link to your bookmark bar: Pkg.go.dev Doc
Information for a given package or module may be limited if we are not able to detect a suitable license. See our license policy for more information.
Share your ideas, feature requests, and bugs on the Go Issue Tracker For questions, please post on the #tools slack channel on the Gophers Slack, or email the golang-dev mailing list.