blob: bc638a8107ce2fd81347250a9f75322de918cacb [file] [log] [blame]
{{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=Material+Icons">
<link rel="stylesheet" href="/css/styles.css">
{{if strings.HasPrefix .URL "/blog/"}}
<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}}