| <!DOCTYPE html> |
| <html lang="en" data-theme="auto"> |
| <head> |
| |
| <link rel="preconnect" href="https://www.googletagmanager.com"> |
| <script >(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': |
| new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], |
| j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= |
| 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); |
| })(window,document,'script','dataLayer','GTM-W8MVQXG');</script> |
| |
| <meta charset="utf-8"> |
| <meta name="viewport" content="width=device-width, initial-scale=1"> |
| <meta name="theme-color" content="#00add8"> |
| <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Material+Icons"> |
| <link rel="stylesheet" href="/css/styles.css"> |
| <link rel="icon" href="/images/favicon-gopher.png" sizes="any"> |
| <link rel="apple-touch-icon" href="/images/favicon-gopher-plain.png"/> |
| <link rel="icon" href="/images/favicon-gopher.svg" type="image/svg+xml"> |
| <link rel="me" href="https://hachyderm.io/@golang"> |
| |
| |
| <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': |
| new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], |
| j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= |
| 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); |
| })(window,document,'script','dataLayer','GTM-W8MVQXG');</script> |
| |
| <script src="/js/site.js"></script> |
| <meta name="og:url" content="https://go.dev/wiki/Go-Release-Cycle"> |
| <meta name="og:title" content="Go Wiki: Go-Release-Cycle - The Go Programming Language"> |
| <title>Go Wiki: Go-Release-Cycle - The Go Programming Language</title> |
| |
| <meta name="og:image" content="https://go.dev/doc/gopher/gopher5logo.jpg"> |
| <meta name="twitter:image" content="https://go.dev/doc/gopher/gopherbelly300.jpg"> |
| <meta name="twitter:card" content="summary"> |
| <meta name="twitter:site" content="@golang"> |
| </head> |
| <body class="Site"> |
| |
| <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-W8MVQXG" |
| height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> |
| |
| |
| |
| <header class="Site-header js-siteHeader"> |
| <div class="Header Header--dark"> |
| <nav class="Header-nav"> |
| <a href="/"> |
| <img |
| class="js-headerLogo Header-logo" |
| src="/images/go-logo-white.svg" |
| alt="Go"> |
| </a> |
| <div class="skip-navigation-wrapper"> |
| <a class="skip-to-content-link" aria-label="Skip to main content" href="#main-content"> Skip to Main Content </a> |
| </div> |
| <div class="Header-rightContent"> |
| <ul class="Header-menu"> |
| <li class="Header-menuItem "> |
| <a href="#" class="js-desktop-menu-hover" aria-label=Why Go aria-describedby="dropdown-description"> |
| Why Go <i class="material-icons" aria-hidden="true">arrow_drop_down</i> |
| </a> |
| <div class="screen-reader-only" id="dropdown-description" hidden> |
| Press Enter to activate/deactivate dropdown |
| </div> |
| <ul class="Header-submenu js-desktop-submenu-hover" aria-label="submenu"> |
| <li class="Header-submenuItem"> |
| <div> |
| <a href="/solutions/case-studies"> |
| Case Studies |
| |
| </a> |
| </div> |
| <p>Common problems companies solve with Go</p> |
| </li> |
| <li class="Header-submenuItem"> |
| <div> |
| <a href="/solutions/use-cases"> |
| Use Cases |
| |
| </a> |
| </div> |
| <p>Stories about how and why companies use Go</p> |
| </li> |
| <li class="Header-submenuItem"> |
| <div> |
| <a href="/security/"> |
| Security |
| |
| </a> |
| </div> |
| <p>How Go can help keep you secure by default</p> |
| </li> |
| </ul> |
| </li> |
| <li class="Header-menuItem "> |
| <a href="/learn/" aria-label=Learn aria-describedby="dropdown-description"> |
| Learn |
| </a> |
| <div class="screen-reader-only" id="dropdown-description" hidden> |
| Press Enter to activate/deactivate dropdown |
| </div> |
| </li> |
| <li class="Header-menuItem "> |
| <a href="#" class="js-desktop-menu-hover" aria-label=Docs aria-describedby="dropdown-description"> |
| Docs <i class="material-icons" aria-hidden="true">arrow_drop_down</i> |
| </a> |
| <div class="screen-reader-only" id="dropdown-description" hidden> |
| Press Enter to activate/deactivate dropdown |
| </div> |
| <ul class="Header-submenu js-desktop-submenu-hover" aria-label="submenu"> |
| <li class="Header-submenuItem"> |
| <div> |
| <a href="/doc/effective_go"> |
| Effective Go |
| |
| </a> |
| </div> |
| <p>Tips for writing clear, performant, and idiomatic Go code</p> |
| </li> |
| <li class="Header-submenuItem"> |
| <div> |
| <a href="/doc"> |
| Go User Manual |
| |
| </a> |
| </div> |
| <p>A complete introduction to building software with Go</p> |
| </li> |
| <li class="Header-submenuItem"> |
| <div> |
| <a href="https://pkg.go.dev/std"> |
| Standard library |
| |
| </a> |
| </div> |
| <p>Reference documentation for Go's standard library</p> |
| </li> |
| <li class="Header-submenuItem"> |
| <div> |
| <a href="/doc/devel/release"> |
| Release Notes |
| |
| </a> |
| </div> |
| <p>Learn what's new in each Go release</p> |
| </li> |
| </ul> |
| </li> |
| <li class="Header-menuItem "> |
| <a href="https://pkg.go.dev" aria-label=Packages aria-describedby="dropdown-description"> |
| Packages |
| </a> |
| <div class="screen-reader-only" id="dropdown-description" hidden> |
| Press Enter to activate/deactivate dropdown |
| </div> |
| </li> |
| <li class="Header-menuItem "> |
| <a href="#" class="js-desktop-menu-hover" aria-label=Community aria-describedby="dropdown-description"> |
| Community <i class="material-icons" aria-hidden="true">arrow_drop_down</i> |
| </a> |
| <div class="screen-reader-only" id="dropdown-description" hidden> |
| Press Enter to activate/deactivate dropdown |
| </div> |
| <ul class="Header-submenu js-desktop-submenu-hover" aria-label="submenu"> |
| <li class="Header-submenuItem"> |
| <div> |
| <a href="/talks/"> |
| Recorded Talks |
| |
| </a> |
| </div> |
| <p>Videos from prior events</p> |
| </li> |
| <li class="Header-submenuItem"> |
| <div> |
| <a href="https://www.meetup.com/pro/go"> |
| Meetups |
| <i class="material-icons">open_in_new</i> |
| </a> |
| </div> |
| <p>Meet other local Go developers</p> |
| </li> |
| <li class="Header-submenuItem"> |
| <div> |
| <a href="/wiki/Conferences"> |
| Conferences |
| <i class="material-icons">open_in_new</i> |
| </a> |
| </div> |
| <p>Learn and network with Go developers from around the world</p> |
| </li> |
| <li class="Header-submenuItem"> |
| <div> |
| <a href="/blog"> |
| Go blog |
| |
| </a> |
| </div> |
| <p>The Go project's official blog.</p> |
| </li> |
| <li class="Header-submenuItem"> |
| <div> |
| <a href="/help"> |
| Go project |
| |
| </a> |
| </div> |
| <p>Get help and stay informed from Go</p> |
| </li> |
| <li class="Header-submenuItem"> |
| <div> |
| Get connected |
| </div> |
| <p></p> |
| <div class="Header-socialIcons"> |
| |
| <a class="Header-socialIcon" aria-label="Get connected with google-groups (Opens in new window)" href="https://groups.google.com/g/golang-nuts"><img src="/images/logos/social/google-groups.svg" /></a> |
| <a class="Header-socialIcon" aria-label="Get connected with github (Opens in new window)" href="https://github.com/golang"><img src="/images/logos/social/github.svg" /></a> |
| <a class="Header-socialIcon" aria-label="Get connected with twitter (Opens in new window)" href="https://twitter.com/golang"><img src="/images/logos/social/twitter.svg" /></a> |
| <a class="Header-socialIcon" aria-label="Get connected with reddit (Opens in new window)" href="https://www.reddit.com/r/golang/"><img src="/images/logos/social/reddit.svg" /></a> |
| <a class="Header-socialIcon" aria-label="Get connected with slack (Opens in new window)" href="https://invite.slack.golangbridge.org/"><img src="/images/logos/social/slack.svg" /></a> |
| <a class="Header-socialIcon" aria-label="Get connected with stack-overflow (Opens in new window)" href="https://stackoverflow.com/tags/go"><img src="/images/logos/social/stack-overflow.svg" /></a> |
| </div> |
| </li> |
| </ul> |
| </li> |
| </ul> |
| <button class="Header-navOpen js-headerMenuButton Header-navOpen--white" aria-label="Open navigation."> |
| </button> |
| </div> |
| </nav> |
| |
| </div> |
| </header> |
| <aside class="NavigationDrawer js-header"> |
| <nav class="NavigationDrawer-nav"> |
| <div class="NavigationDrawer-header"> |
| <a href="/"> |
| <img class="NavigationDrawer-logo" src="/images/go-logo-blue.svg" alt="Go."> |
| </a> |
| </div> |
| <ul class="NavigationDrawer-list"> |
| |
| <li class="NavigationDrawer-listItem js-mobile-subnav-trigger NavigationDrawer-hasSubnav"> |
| <a href="#"><span>Why Go</span> <i class="material-icons">navigate_next</i></a> |
| |
| <div class="NavigationDrawer NavigationDrawer-submenuItem"> |
| <nav class="NavigationDrawer-nav"> |
| <div class="NavigationDrawer-header"> |
| <a href="#"><i class="material-icons">navigate_before</i>Why Go</a> |
| </div> |
| <ul class="NavigationDrawer-list"> |
| <li class="NavigationDrawer-listItem"> |
| <a href="/solutions/case-studies"> |
| Case Studies |
| |
| </a> |
| |
| </li> |
| <li class="NavigationDrawer-listItem"> |
| <a href="/solutions/use-cases"> |
| Use Cases |
| |
| </a> |
| |
| </li> |
| <li class="NavigationDrawer-listItem"> |
| <a href="/security/"> |
| Security |
| |
| </a> |
| |
| </li> |
| </ul> |
| </div> |
| </div> |
| </li> |
| |
| |
| |
| <li class="NavigationDrawer-listItem "> |
| <a href="/learn/">Learn</a> |
| </li> |
| |
| |
| <li class="NavigationDrawer-listItem js-mobile-subnav-trigger NavigationDrawer-hasSubnav"> |
| <a href="#"><span>Docs</span> <i class="material-icons">navigate_next</i></a> |
| |
| <div class="NavigationDrawer NavigationDrawer-submenuItem"> |
| <nav class="NavigationDrawer-nav"> |
| <div class="NavigationDrawer-header"> |
| <a href="#"><i class="material-icons">navigate_before</i>Docs</a> |
| </div> |
| <ul class="NavigationDrawer-list"> |
| <li class="NavigationDrawer-listItem"> |
| <a href="/doc/effective_go"> |
| Effective Go |
| |
| </a> |
| |
| </li> |
| <li class="NavigationDrawer-listItem"> |
| <a href="/doc"> |
| Go User Manual |
| |
| </a> |
| |
| </li> |
| <li class="NavigationDrawer-listItem"> |
| <a href="https://pkg.go.dev/std"> |
| Standard library |
| |
| </a> |
| |
| </li> |
| <li class="NavigationDrawer-listItem"> |
| <a href="/doc/devel/release"> |
| Release Notes |
| |
| </a> |
| |
| </li> |
| </ul> |
| </div> |
| </div> |
| </li> |
| |
| |
| |
| <li class="NavigationDrawer-listItem "> |
| <a href="https://pkg.go.dev">Packages</a> |
| </li> |
| |
| |
| <li class="NavigationDrawer-listItem js-mobile-subnav-trigger NavigationDrawer-hasSubnav"> |
| <a href="#"><span>Community</span> <i class="material-icons">navigate_next</i></a> |
| |
| <div class="NavigationDrawer NavigationDrawer-submenuItem"> |
| <nav class="NavigationDrawer-nav"> |
| <div class="NavigationDrawer-header"> |
| <a href="#"><i class="material-icons">navigate_before</i>Community</a> |
| </div> |
| <ul class="NavigationDrawer-list"> |
| <li class="NavigationDrawer-listItem"> |
| <a href="/talks/"> |
| Recorded Talks |
| |
| </a> |
| |
| </li> |
| <li class="NavigationDrawer-listItem"> |
| <a href="https://www.meetup.com/pro/go"> |
| Meetups |
| <i class="material-icons">open_in_new</i> |
| </a> |
| |
| </li> |
| <li class="NavigationDrawer-listItem"> |
| <a href="/wiki/Conferences"> |
| Conferences |
| <i class="material-icons">open_in_new</i> |
| </a> |
| |
| </li> |
| <li class="NavigationDrawer-listItem"> |
| <a href="/blog"> |
| Go blog |
| |
| </a> |
| |
| </li> |
| <li class="NavigationDrawer-listItem"> |
| <a href="/help"> |
| Go project |
| |
| </a> |
| |
| </li> |
| <li class="NavigationDrawer-listItem"> |
| <div>Get connected</div> |
| <div class="Header-socialIcons"> |
| |
| <a class="Header-socialIcon" href="https://groups.google.com/g/golang-nuts"><img src="/images/logos/social/google-groups.svg" /></a> |
| <a class="Header-socialIcon" href="https://github.com/golang"><img src="/images/logos/social/github.svg" /></a> |
| <a class="Header-socialIcon" href="https://twitter.com/golang"><img src="/images/logos/social/twitter.svg" /></a> |
| <a class="Header-socialIcon" href="https://www.reddit.com/r/golang/"><img src="/images/logos/social/reddit.svg" /></a> |
| <a class="Header-socialIcon" href="https://invite.slack.golangbridge.org/"><img src="/images/logos/social/slack.svg" /></a> |
| <a class="Header-socialIcon" href="https://stackoverflow.com/tags/go"><img src="/images/logos/social/stack-overflow.svg" /></a> |
| </div> |
| </li> |
| </ul> |
| </div> |
| </div> |
| </li> |
| |
| |
| </ul> |
| </nav> |
| </aside> |
| <div class="NavigationDrawer-scrim js-scrim" role="presentation"></div> |
| <main class="SiteContent SiteContent--default" id="main-content"> |
| |
| |
| |
| <article class="Doc Article"> |
| |
| |
| |
| |
| |
| <h1>Go Wiki: Go-Release-Cycle</h1> |
| |
| |
| |
| |
| |
| |
| <div id="nav" class="TOC"></div> |
| |
| |
| |
| <p>This wiki page is maintained by the Go team. Please |
| <a href="https://groups.google.com/group/golang-dev" rel="noreferrer" target="_blank">send comments to golang-dev</a> or |
| <a href="https://go.dev/issue" rel="noreferrer" target="_blank">file issues</a> instead of making changes directly.</p> |
| <p>Short link: <a href="https://go.dev/s/release" rel="noreferrer" target="_blank">https://go.dev/s/release</a>.</p> |
| <h2 id="overview">Overview</h2> |
| <p>Go is released every six months. Each release cycle is broken down into a |
| development phase lasting about 4 months, followed by a 3-month period of |
| testing and polishing called the release freeze. If everything goes well, work |
| on the next release begins before the previous release has shipped, resulting in |
| an overlap of about a month.</p> |
| <p>After the initial release of a version, it is supported with minor releases that |
| fix severe bugs and security issues.</p> |
| <h2 id="timeline">Timeline</h2> |
| <p>The current release cycle is aligned to start in mid-January and mid-July of |
| each year. The target milestones for a release cycle are as described below. We |
| try to hit the targets as closely as possible, while still delivering a quality |
| release.</p> |
| <p>To give the team time to prepare, and to address unexpected problems, we prefer |
| to do release work early or mid-week. That means that exact dates will vary year |
| to year, so milestones are specified as weeks in a particular month. Week 1 is |
| the week starting on the first Monday of the month. All dates are subject to |
| change based on the year’s holiday timings.</p> |
| <p><img src="images/release-cycle.svg" alt="release"></p> |
| <h4 id="january--july-week-1-planning-for-release-begins">January / July week 1: Planning for release begins.</h4> |
| <p>Planning of major work for upcoming release cycle is announced on |
| <a href="https://groups.google.com/group/golang-dev" rel="noreferrer" target="_blank">golang-dev</a>.</p> |
| <p>Example: <a href="https://groups.google.com/g/golang-dev/c/V8ez4YunkeE" rel="noreferrer" target="_blank">Go 1.20</a></p> |
| <h4 id="january--july-week-3-release-work-begins">January / July week 3: Release work begins.</h4> |
| <p>Once the prior release has entered its final stabilization period, the tree |
| opens for general development. All kinds of development are welcome during this |
| period. It’s preferable for large or particularly risky changes to land well |
| before the end of the development window, so that there’s time to fix any |
| problems that arise with them.</p> |
| <h4 id="may--november-week-4-release-freeze-begins">May / November week 4: Release freeze begins.</h4> |
| <p>This milestone begins the second part of the release cycle, the release freeze. |
| The release freeze applies to the entire main repository as well as to the code |
| in subrepositories that is needed to build the binaries included in the release, |
| particularly vet and all its dependencies in the tools subrepository.</p> |
| <p>During the freeze, only bug fixes, test-only changes, and doc updates |
| are accepted. On occasion new work may be done during the freeze, but |
| only in exceptional circumstances and typically only if the work was |
| proposed and approved before the cutoff. Such changes must be low |
| risk. See <a href="#freeze-exceptions">freeze exceptions</a> below.</p> |
| <p>This part of the release cycle is focused on improving the quality of the |
| release, by testing it and fixing bugs that are found. However, every fix must |
| be evaluated to balance the benefit of a possible fix against the cost of now |
| having not as well tested code (the fix) in the release. Early in the release |
| cycle, the balance tends toward accepting a fix. Late in the release cycle, the |
| balance tends toward rejecting a fix, unless a case can be made that the fix is |
| both low risk and high reward.</p> |
| <p>Examples of low risk changes appropriate late in the cycle include changes to |
| documentation and fixes to new features being introduced in the current release |
| (since there is no chance of introducing a regression compared to an earlier |
| release).</p> |
| <p>Shortly after the freeze begins, nearly all known bugs should have been fixed or |
| explicitly postponed (either to the next release or indefinitely). The remainder |
| should usually be tracked as release blockers and worked on urgently.</p> |
| <h4 id="june--december-week-2-release-candidate-1-issued">June / December week 2: Release candidate 1 issued.</h4> |
| <p>A release candidate is meant to be as close as possible to the actual release |
| bits. Issuing a release candidate is an indication that the Go team has high |
| confidence that the tree is free of critical bugs. In particular, because Google |
| continuously tracks the development version of Go, by the time a release |
| candidate is issued, a close approximation of it will have been running in |
| production at Google for at least a week or two.</p> |
| <p>Once a release candidate is issued, only documentation changes and changes to |
| address critical bugs should be made. In general the bar for bug fixes at this |
| point is even slightly higher than the bar for bug fixes in a minor release. We |
| may prefer to issue a release with a known but very rare crash than to issue a |
| release with a new but not production-tested fix.</p> |
| <p>If critical bugs are reported and fixed, additional release candidates may be |
| issued, but typically not more than one every two weeks.</p> |
| <p>Again, a release candidate is meant to be bug-free, as much as possible. |
| Organizations are encouraged to deploy it in production settings after |
| appropriate organization-specific testing.</p> |
| <p>The calm period between a release candidate and the final release is a good time |
| for additional testing or for discussing the next release (see the planning |
| milestone above).</p> |
| <h4 id="july--january-week-3-work-on-the-next-release-begins">July / January week 3: Work on the next release begins</h4> |
| <p>While the current release is being stabilized, the tree reopens for work on the |
| next. During this period, fixes intended for the current release need to be |
| <a href="https://go.dev/wiki/MinorReleases#making-cherry-pick-cls" rel="noreferrer" target="_blank">cherry-picked onto the release branch</a>. |
| Unlike cherry-picks for minor releases, these changes don’t need a backport |
| issue and don’t need to be approved by the release team. As long as they’re |
| permitted by the <a href="#may--november-week-4-release-freeze-begins">freeze policy</a>, |
| they can be reviewed and submitted like any other CL.</p> |
| <h4 id="august--february-week-2-release-issued">August / February week 2: Release issued.</h4> |
| <p>Finally, the release itself!</p> |
| <p>A release should not contain significant changes since the last release |
| candidate: it is important that all code in the release has been well tested. |
| Issuing a release is an indication that release testing has confirmed the |
| release candidate’s high confidence that the tree is free of critical bugs.</p> |
| <p>Even if a release goes smoothly and there’s spare time, we prefer to stay on |
| schedule. Extra testing can only improve the stability of a release, and it also |
| gives developers working on the Go release more time to think about and plan the |
| next release before code changes start pouring in again.</p> |
| <p>By the time of the final release, Google will have been using this version of Go |
| for nearly two months. While Google’s successful use does not guarantee the |
| absence of problems, our experience has been that it certainly helps improve the |
| quality of the release. We strongly encourage other organizations to test |
| release candidates as aggressively as they are able and to report problems that |
| they find.</p> |
| <p>Once a release is stabilized, work on the next release, including code reviews |
| and submission of new code, can begin, and the cycle repeats. Note that if a |
| release is delayed, work on the next release may be delayed as well.</p> |
| <h2 id="release-maintenance">Release Maintenance</h2> |
| <p>A minor release is issued to address one or more critical problems for which |
| there is no workaround (typically related to stability or security). The only |
| code changes included in the release are the fixes for the specific critical |
| problems. Important documentation-only changes and safe test updates (such as |
| disabling tests), may also be included as well, but nothing more. Minor releases |
| preserve backwards compatibility as much as possible, and don’t introduce new |
| APIs.</p> |
| <p>Minor releases to address problems (including security issues) for Go 1.x stop |
| once Go 1.x+2 is released. For more about security updates, see the |
| <a href="https://go.dev/security" rel="noreferrer" target="_blank">security policy</a>.</p> |
| <p>See also the <a href="https://go.dev/wiki/MinorReleases" rel="noreferrer" target="_blank">MinorReleases</a> wiki page.</p> |
| <h2 id="freeze-exceptions">Freeze Exceptions</h2> |
| <p>Fix CLs that are |
| <a href="#may--november-week-4-release-freeze-begins">permitted by the freeze policy</a> do |
| not need a freeze exception.</p> |
| <p>Any exceptions to the freeze must be communicated to and explicitly approved by |
| the Go Release Team before the freeze. If you’d like to request an exception, |
| please file an issue in the issue tracker with “[freeze exception]” as a suffix |
| and include “CC @golang/release” (<a href="https://go.dev/issue/42747" rel="noreferrer" target="_blank">example</a>). We |
| will address any requests on a case-by-case basis with a strong preference for |
| not permitting changes after the freeze.</p> |
| <h2 id="historical-note">Historical note</h2> |
| <p>A version of this schedule, with a shorter development window, was originally |
| adopted for the Go 1.7 release in 2016. After years of difficult releases, |
| testing and process improvements in 2022 and 2023 led to a timely 1.19 release. |
| For 1.20, the development window was expanded with a late freeze and early thaw. |
| These changes were formalized for the 1.21 release. We anticipate continuing to |
| ship on time.</p> |
| |
| |
| |
| |
| |
| <hr> |
| <p> |
| <i>This content is part of the <a href="/wiki/">Go Wiki</a>.</i> |
| </p> |
| |
| </article> |
| |
| |
| |
| </main> |
| <footer class="Site-footer"> |
| <div class="Footer"> |
| <div class="Container"> |
| <div class="Footer-links"> |
| <div class="Footer-linkColumn"> |
| <a href="/solutions/" class="Footer-link Footer-link--primary" aria-describedby="footer-description"> |
| Why Go |
| </a> |
| <a href="/solutions/use-cases" class="Footer-link" aria-describedby="footer-description"> |
| Use Cases |
| </a> |
| <a href="/solutions/case-studies" class="Footer-link" aria-describedby="footer-description"> |
| Case Studies |
| </a> |
| </div> |
| <div class="Footer-linkColumn"> |
| <a href="/learn/" class="Footer-link Footer-link--primary" aria-describedby="footer-description"> |
| Get Started |
| </a> |
| <a href="/play" class="Footer-link" aria-describedby="footer-description"> |
| Playground |
| </a> |
| <a href="/tour/" class="Footer-link" aria-describedby="footer-description"> |
| Tour |
| </a> |
| <a href="https://stackoverflow.com/questions/tagged/go?tab=Newest" class="Footer-link" aria-describedby="footer-description"> |
| Stack Overflow |
| </a> |
| <a href="/help/" class="Footer-link" aria-describedby="footer-description"> |
| Help |
| </a> |
| </div> |
| <div class="Footer-linkColumn"> |
| <a href="https://pkg.go.dev" class="Footer-link Footer-link--primary" aria-describedby="footer-description"> |
| Packages |
| </a> |
| <a href="/pkg/" class="Footer-link" aria-describedby="footer-description"> |
| Standard Library |
| </a> |
| <a href="https://pkg.go.dev/about" class="Footer-link" aria-describedby="footer-description"> |
| About Go Packages |
| </a> |
| </div> |
| <div class="Footer-linkColumn"> |
| <a href="/project" class="Footer-link Footer-link--primary" aria-describedby="footer-description"> |
| About |
| </a> |
| <a href="/dl/" class="Footer-link" aria-describedby="footer-description"> |
| Download |
| </a> |
| <a href="/blog/" class="Footer-link" aria-describedby="footer-description"> |
| Blog |
| </a> |
| <a href="https://github.com/golang/go/issues" class="Footer-link" aria-describedby="footer-description"> |
| Issue Tracker |
| </a> |
| <a href="/doc/devel/release" class="Footer-link" aria-describedby="footer-description"> |
| Release Notes |
| </a> |
| <a href="/brand" class="Footer-link" aria-describedby="footer-description"> |
| Brand Guidelines |
| </a> |
| <a href="/conduct" class="Footer-link" aria-describedby="footer-description"> |
| Code of Conduct |
| </a> |
| </div> |
| <div class="Footer-linkColumn"> |
| <a href="https://www.twitter.com/golang" class="Footer-link Footer-link--primary" aria-describedby="footer-description"> |
| Connect |
| </a> |
| <a href="https://www.twitter.com/golang" class="Footer-link" aria-describedby="footer-description"> |
| Twitter |
| </a> |
| <a href="https://github.com/golang" class="Footer-link" aria-describedby="footer-description"> |
| GitHub |
| </a> |
| <a href="https://invite.slack.golangbridge.org/" class="Footer-link" aria-describedby="footer-description"> |
| Slack |
| </a> |
| <a href="https://reddit.com/r/golang" class="Footer-link" aria-describedby="footer-description"> |
| r/golang |
| </a> |
| <a href="https://www.meetup.com/pro/go" class="Footer-link" aria-describedby="footer-description"> |
| Meetup |
| </a> |
| <a href="https://golangweekly.com/" class="Footer-link" aria-describedby="footer-description"> |
| Golang Weekly |
| </a> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div class="screen-reader-only" id="footer-description" hidden> |
| Opens in new window. |
| </div> |
| <div class="Footer"> |
| <div class="Container Container--fullBleed"> |
| <div class="Footer-bottom"> |
| <img class="Footer-gopher" src="/images/gophers/pilot-bust.svg" alt="The Go Gopher"> |
| <ul class="Footer-listRow"> |
| <li class="Footer-listItem"> |
| <a href="/copyright" aria-describedby="footer-description">Copyright</a> |
| </li> |
| <li class="Footer-listItem"> |
| <a href="/tos" aria-describedby="footer-description">Terms of Service</a> |
| </li> |
| <li class="Footer-listItem"> |
| <a href="http://www.google.com/intl/en/policies/privacy/" aria-describedby="footer-description" |
| target="_blank" |
| rel="noopener"> |
| Privacy Policy |
| </a> |
| </li> |
| <li class="Footer-listItem"> |
| <a |
| href="/s/website-issue" aria-describedby="footer-description" |
| target="_blank" |
| rel="noopener" |
| > |
| Report an Issue |
| </a> |
| </li> |
| <li class="Footer-listItem go-Footer-listItem"> |
| <button class="go-Button go-Button--text go-Footer-toggleTheme js-toggleTheme" aria-label="Toggle theme"> |
| <img |
| data-value="auto" |
| class="go-Icon go-Icon--inverted" |
| height="24" |
| width="24" |
| src="/images/icons/brightness_6_gm_grey_24dp.svg" |
| alt="System theme"> |
| <img |
| data-value="dark" |
| class="go-Icon go-Icon--inverted" |
| height="24" |
| width="24" |
| src="/images/icons/brightness_2_gm_grey_24dp.svg" |
| alt="Dark theme"> |
| <img |
| data-value="light" |
| class="go-Icon go-Icon--inverted" |
| height="24" |
| width="24" |
| src="/images/icons/light_mode_gm_grey_24dp.svg" |
| alt="Light theme"> |
| </button> |
| </li> |
| </ul> |
| <a class="Footer-googleLogo" target="_blank" href="https://google.com" rel="noopener"> |
| <img class="Footer-googleLogoImg" src="/images/google-white.png" alt="Google logo"> |
| </a> |
| </div> |
| </div> |
| </div> |
| <script src="/js/jquery.js"></script> |
| <script src="/js/carousels.js"></script> |
| <script src="/js/searchBox.js"></script> |
| <script src="/js/misc.js"></script> |
| <script src="/js/hats.js"></script> |
| <script src="/js/playground.js"></script> |
| <script src="/js/godocs.js"></script> |
| <script async src="/js/copypaste.js"></script> |
| </footer> |
| <section class="Cookie-notice js-cookieNotice"> |
| <div>go.dev uses cookies from Google to deliver and enhance the quality of its services and to |
| analyze traffic. <a target=_blank href="https://policies.google.com/technologies/cookies">Learn more.</a></div> |
| <div><button class="go-Button">Okay</button></div> |
| </section> |
| </body> |
| </html> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |