{{block "entirepage" . -}}
<!DOCTYPE html>
<html lang="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">
<link rel="stylesheet" href="/css/styles.css">
{{if strings.HasPrefix .URL "/blog/"}}
<link rel="stylesheet" href="/css/blogfonts.css">
<link rel="alternate" title="The Go Blog" type="application/atom+xml" href="/blog/feed.atom">
{{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>
<title>{{.title}}{{if ne .URL "/"}} - The Go Programming Language{{end}}</title>
{{if .link -}}
<meta http-equiv="refresh" content="0; url={{.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) -->

{{$menus := data "/menus.yaml"}}
<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="Header-rightContent">
        <ul class="Header-menu">
          {{- $currentPage := .}}
          {{- range $menus.main}}
          <li class="Header-menuItem {{if strings.HasPrefix $currentPage.URL .url}} Header-menuItem--active{{end}}">
            <a href="{{.url}}">{{.name}}</a>
          </li>
          {{- end}}
        </ul>
        <button class="Header-navOpen js-headerMenuButton Header-navOpen--white" aria-label="Open navigation.">
        </button>
      </div>
    </nav>
    {{ if (eq .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="/">
        <img class="NavigationDrawer-logo" src="/images/go-logo-blue.svg" alt="Go.">
      </a>
    </div>
    <ul class="NavigationDrawer-list">
      {{- range $menus.main}}
        <li class="NavigationDrawer-listItem {{if strings.HasPrefix $currentPage.URL .url}} NavigationDrawer-listItem--active{{end}}">
          <a href="{{.url}}">{{.name}}</a>
        </li>
      {{- end}}
    </ul>
  </nav>
</aside>
<div class="NavigationDrawer-scrim js-scrim" role="presentation"></div>
<main class="SiteContent SiteContent--default">
  {{block "layout" .}}{{.Content}}{{end}}
</main>
<footer class="Site-footer">
  <div class="Footer">
    <div class="Container">
      <div class="Footer-links">
        {{- range $menus.footer}}
          <div class="Footer-linkColumn">
            <a href="{{.url}}" class="Footer-link Footer-link--primary">
              {{.name}}
            </a>
            {{- range .children}}
              <a href="{{.url}}" class="Footer-link">
                {{.name}}
              </a>
            {{- 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="/s/website-issue"
              target="_blank"
              rel="noopener"
              >
              Report an Issue
            </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/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>
</footer>
</body>
</html>
{{end}}

{{define "breadcrumbnav p1 p2"}}
{{- if ne .p1.URL "/"}}
  {{- breadcrumbnav (page (path.Dir (strings.TrimRight .p1.URL "/"))) .p2}}
{{- end}}
{{- if not (eq .p1.title "go.dev")}}
<li class="BreadcrumbNav-li {{if eq .p1.URL .p2.URL}}active{{end}}">
  <a class="BreadcrumbNav-link" href="{{.p1.URL}}">
  {{or .p1.company .p1.title}}
  </a>
</li>
{{- end}}
{{- end}}

{{define "breadcrumbs"}}
<div class="BreadcrumbNav">
    <ol class="BreadcrumbNav-inner">
      {{breadcrumbnav . .}}
    </ol>
</div>
{{- end}}

{{define "gopher info" -}}
{{- with (yaml .info)}}
{{- $src := "/images/gophers/wrench.svg"}}
{{- $alt := "Go gophers with wrench"}}
{{- $size := "Large"}}
{{- $align := "Left"}}
{{- $gopher := .color}}
{{- $sizeIn := (or .size "")}}
{{- if eq (.align) "right" "Right"}}
   {{- $align = "Right"}}
{{- end}}
{{- if eq $sizeIn "XLarge" "xl" "xlarge"}}
    {{- $size = "XLarge"}}
{{- end}}
{{- if eq $gopher "plane"}}
    {{- $src = "/images/gophers/biplane.svg"}}
    {{- $alt = "Go gopher in a plane"}}
{{- end}}
{{- if eq $gopher "blue"}}
    {{- $src = "/images/gophers/blue.svg"}}
    {{- $alt = "Go gopher"}}
{{- end}}
{{- if eq $gopher "front" "sticker1"}}
    {{- $src = "/images/gophers/front.svg"}}
    {{- $alt = "Go gopher"}}
{{- end}}
{{- if eq $gopher "graduate"}}
    {{- $src = "/images/gophers/graduate.svg"}}
    {{- $alt = "Go gopher graduating"}}
{{- end}}
{{- if eq $gopher "graduate-colorized"}}
    {{- $src = "/images/gophers/graduate-colorized.svg"}}
    {{- $alt = "Go gopher graduating"}}
{{- end}}
{{- if eq $gopher "green"}}
    {{- $src = "/images/gophers/green.svg"}}
    {{- $alt = "Go gopher"}}
{{- end}}
{{- if eq $gopher "grey" "gray"}}
    {{- $src = "/images/gophers/grey.svg"}}
    {{- $alt = "Go gopher"}}
{{- end}}
{{- if eq $gopher "happy" "sticker2"}}
    {{- $src = "/images/gophers/happy.svg"}}
    {{- $alt = "Go gopher"}}
{{- end}}
{{- if eq $gopher "headlamp"}}
    {{- $src = "/images/gophers/headlamp.svg"}}
    {{- $alt = "Go gopher with headlamp"}}
{{- end}}
{{- if eq $gopher "headlamp-colorized"}}
    {{- $src = "/images/gophers/headlamp-colorized.svg"}}
    {{- $alt = "Go gopher with headlamp"}}
{{- end}}
{{- if eq $gopher "ladder"}}
    {{- $src = "/images/gophers/ladder.svg"}}
    {{- $alt = "Go gopher with ladder"}}
{{- end}}
{{- if eq $gopher "machine"}}
    {{- $src = "/images/gophers/machine.svg"}}
    {{- $alt = "Go gophers with a machine"}}
{{- end}}
{{- if eq $gopher "machine-colorized"}}
    {{- $src = "/images/gophers/machine-colorized.svg"}}
    {{- $alt = "Go gopher with a machine"}}
{{- end}}
{{- if eq $gopher "megaphone"}}
    {{- $src = "/images/gophers/megaphone.svg"}}
    {{- $alt = "Go gopher with a megaphone"}}
{{- end}}
{{- if eq $gopher "peach"}}
    {{- $src = "/images/gophers/peach.svg"}}
    {{- $alt = "Go gopher"}}
{{- end}}
{{- if eq $gopher "pilot-bust"}}
    {{- $src = "/images/gophers/pilot-bust.svg"}}
    {{- $alt = "Go gopher pilot"}}
{{- end}}
{{- if eq $gopher "pink"}}
    {{- $src = "/images/gophers/pink.svg"}}
    {{- $alt = "Go gopher"}}
{{- end}}
{{- if eq $gopher "running"}}
    {{- $src = "/images/gophers/running.svg"}}
    {{- $alt = "Go gopher running"}}
{{- end}}
{{- if eq $gopher "slate"}}
    {{- $src = "/images/gophers/slate.svg"}}
    {{- $alt = "Go gopher"}}
{{- end}}
{{- if eq $gopher "wrench"}}
    {{- $src = "/images/gophers/wrench.svg"}}
    {{- $alt = "gopher with a wrench"}}
{{- end}}
{{- if eq $gopher "yellow"}}
    {{- $src = "/images/gophers/yellow.svg"}}
    {{- $alt = "Go gopher"}}
{{- end}}
{{- if eq $gopher "violet"}}
    {{- $src = "/images/gophers/violet.svg"}}
    {{- $alt = "Go gopher"}}
{{- end}}
{{- if eq $gopher "factory"}}
    {{- $src = "/images/gophers/factory.png"}}
    {{- $alt = "Go gopher factory"}}
{{- end}}
<img
  loading="lazy"
  class="{{$size}}Media-image {{$align}}"
  alt="{{$alt}}"
  src="{{$src}}">
{{- end}}
{{- end}}

{{define "pkg path name?" -}}
<a href="https://pkg.go.dev/{{.path}}?tab=overview">{{or .name .path}}</a>
{{- end}}


{{define "breadcrumb"}}
{{$elems := strings.Split (strings.Trim . "/") "/"}}
{{$prefix := slice $elems 0 (sub (len $elems) 1)}}
{{range $i, $elem := $prefix -}}
<a href="/{{strings.Join (slice $prefix 0 (add $i 1)) "/"}}/">{{$elem}}</a>/
{{- end -}}
<span class="text-muted">{{strings.Join (slice $elems (len $prefix) (len $elems)) "/"}}</span>
{{end}}

{{define "doclayout"}}
{{/* used from various subdirectory default.tmpl */}}
<article class="Doc Article">

{{if .title}}
<h1>{{.title}}</h1>
{{else if eq .layout "error"}}
<h1>Error</h1>
{{else if eq .layout "dir"}}
<h1>Directory {{breadcrumb .URL}}</h1>
{{else if and (eq .layout "texthtml") (strings.HasSuffix .URL ".go")}}
<h1>Source file {{breadcrumb .URL}}</h1>
{{else if eq .layout "texthtml"}}
<h1>Text file {{breadcrumb .URL}}</h1>
{{end}}

{{with .subtitle}}
<h2 class="subtitle">{{.}}</h2>
{{end}}

{{/* The Table of Contents is automatically inserted in this <div>.
     Do not delete this <div>. */}}
{{if not .hidetoc}}
<div id="nav" class="TOC"></div>
{{end}}

{{.Content}}

</article>

{{end}}
