<!DOCTYPE html>
<html lang="{{$.Site.LanguageCode | default "en"}}">
<head>
<!-- Google Tag Manager -->
<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>
  <!-- End Google Tag Manager -->
<meta charset="utf-8">
<meta name="description" content="Go is an open source programming language that makes it easy to build simple, reliable, and efficient software.">
<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=Google+Sans:400,500,600|Work+Sans:400,500,600|Roboto:400,500,700|Open+Sans:Source+Code+Pro|Material+Icons">
{{$styles := resources.Get "css/styles.css" -}}
{{if .Site.IsServer -}}
  <link rel="stylesheet" href="{{$styles.RelPermalink}}">
{{else -}}
  {{$stylesFP := $styles | fingerprint -}}
  <link rel="stylesheet" href="{{$stylesFP.RelPermalink}}" integrity="{{$stylesFP.Data.Integrity}}">
{{end -}}
  <!-- Google Tag Manager -->
  <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>
  <!-- End Google Tag Manager -->
<script src="/js/site.js"></script>
<script src="/js/hats.js"></script>
<title>{{.Title}}{{if not .IsHome}} - {{.Site.Title}}{{end}}</title>
{{if (isset .Params "link") -}}
<meta http-equiv="refresh" content="0; url={{.Params.link}}">
{{end -}}
</head>
<body class="Site">
  <!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-W8MVQXG"
  height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
  <!-- End Google Tag Manager (noscript) -->
<header class="Site-header js-siteHeader">
  <div class="Banner">
    <div class="Banner-inner">
      <div class="Banner-message">Black Lives Matter</div>
      <a class="Banner-action"
         href="https://support.eji.org/give/153413/#!/donation/checkout"
         target="_blank"
         rel="noopener">
         Support the Equal Justice Initiative
      </a>
    </div>
  </div>
  <div class="Header Header--dark">
    <nav class="Header-nav">
      <a href="{{.Site.BaseURL}}">
        <img
          class="js-headerLogo Header-logo"
          src="/images/go-logo-white.svg"
          alt="Go">
      </a>
      <div class="Header-rightContent">
        {{ partial "searchForm.html" . }}
        <ul class="Header-menu">
          {{- $currentPage := .}}
          {{- range .Site.Menus.main}}
          {{- $url := .URL}}
          {{- if and (not $currentPage.Site.IsServer) (eq .Identifier "learn")}}
            {{- $url = "https://learn.go.dev"}}
          {{- end}}
          {{- if not $currentPage.Site.IsServer}}
            {{- $url = $url | absURL}}
          {{- end}}
          <li class="Header-menuItem {{if or ($currentPage.IsMenuCurrent "main" .) ($currentPage.HasMenuCurrent "main" .) (eq $currentPage.Title .Title)}} Header-menuItem--active{{end}}">
            <a href="{{$url}}" title="{{.Title}}">{{.Name}}</a>
          </li>
          {{- end}}
        </ul>
        <button class="Header-navOpen js-headerMenuButton Header-navOpen--white" aria-label="Open navigation.">
        </button>
      </div>
    </nav>
    {{ if (eq .Params.Series "Use Cases") }}
    <div class="UseCaseSubNav js-useCaseSubnav">
      <button class="UseCaseSubNav-menuHeader js-useCaseSubnavHeader">
        Jump to
        <img
          class="UseCaseSubNav-menuIcon js-useCaseSubnavMenuIcon"
          alt="Open menu icon" src="/images/icons/chevron-down.svg">
      </button>
      <div class="UseCaseSubNav-menu js-useCaseSubnavMenu">
        <div class="UseCaseSubNav-anchorLinks js-useCaseSubnavLinks">
        </div>
      </div>
    </div>
    {{end}}
  </div>
</header>
<aside class="NavigationDrawer js-header">
  <nav class="NavigationDrawer-nav">
    <div class="NavigationDrawer-header">
      <a href="{{.Site.BaseURL}}">
        <img class="NavigationDrawer-logo" src="/images/go-logo-blue.svg" alt="Go.">
      </a>
    </div>
    <ul class="NavigationDrawer-list">
      {{- range .Site.Menus.main}}
        {{- $url := .URL}}
        {{- if and (not $currentPage.Site.IsServer) (eq .Identifier "learn")}}
          {{- $url = "https://learn.go.dev"}}
        {{- end}}
        {{- if not $currentPage.Site.IsServer}}
          {{- $url = $url | absURL}}
        {{- end}}
        <li class="NavigationDrawer-listItem {{if or ($currentPage.IsMenuCurrent "main" .) ($currentPage.HasMenuCurrent "main" .) (eq $currentPage.CurrentSection.Title .Title)}} NavigationDrawer-listItem--active{{end}}">
          <a href="{{$url}}" title="{{.Title}}">{{.Name}}</a>
        </li>
      {{- end}}
    </ul>
  </nav>
</aside>
<div class="NavigationDrawer-scrim js-scrim" role="presentation"></div>
<main class="SiteContent{{if $.Site.Data.messaging.messaging.HeaderMessagingBar }} SiteContent--lower{{else}} SiteContent--default{{end}}">
  {{- block "main" . -}}{{- end -}}
</main>
<footer class="Site-footer">
  <div class="Footer">
    <div class="Container">
      <div class="Footer-links">
        {{- range .Site.Menus.footer}}
          <div class="Footer-linkColumn">
            {{partial "footer/link.html" (dict "menuItem" . "Site" $currentPage.Site)}}
            {{- range .Children}}
              {{partial "footer/link.html" (dict "menuItem" . "Site" $currentPage.Site)}}
            {{end}}
          </div>
        {{- end}}
      </div>
    </div>
  </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">Copyright</a>
          </li>
          <li class="Footer-listItem">
            <a href="/tos">Terms of Service</a>
          </li>
          <li class="Footer-listItem">
            <a href="http://www.google.com/intl/en/policies/privacy/"
              target="_blank"
              rel="noopener">
              Privacy Policy
            </a>
            </li>
          <li class="Footer-listItem">
            <a
              href="https://golang.org/s/discovery-feedback"
              target="_blank"
              rel="noopener"
              >
              Report an Issue
            </a>
          </li>
          <li class="Footer-listItem">
            <a
              href="https://golang.org"
              target="_blank"
              rel="noopener"
              >golang.org
            </a>
          </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/carousels.js"></script>
  <script src="/js/searchBox.js"></script>
  <script src="/js/misc.js"></script>
</footer>
</body>
</html>