blob: a47108f833e9671f5fb664c967599546cc84bcee [file]
<!--{
"Title": "Download and install",
"HideTOC": true,
"Sidebar": "bug",
"Breadcrumb": true
}-->
<p>
Download and install Go quickly with the steps described here.
</p>
<p>For other content on installing, you might be interested in:</p>
<ul>
<li>
<a href="/doc/manage-install">Managing Go installations</a> -- How to
install multiple versions and uninstall.
</li>
<li>
<a href="/doc/install/source">Installing Go from source</a> -- How to
check out the sources, build them on your own machine, and run them.
</li>
</ul>
<p class="DownloadBtn">
<a href="/dl/" id="start" class="btn download">
<span id="download-description" class="js-downloadDescription">
Download
</span>
</a>
</p>
<h2 id="install">Go installation</h2>
<p>
Select the tab for your computer's operating system below, then follow its
installation instructions.
</p>
<div id="os-install-tabs" class="TabSection js-tabSection">
<div id="os-install-tablist" class="TabSection-tabList" role="tablist">
<button
role="tab"
aria-selected="true"
aria-controls="linux-tab"
id="linux"
tabindex="0"
class="TabSection-tab active"
>
Linux
<img class="TabSection-underline" src="/images/icons/underline.svg" width="51" height="4" aria-hidden="true" />
</button>
<button
role="tab"
aria-selected="false"
aria-controls="mac-tab"
id="mac"
tabindex="-1"
class="TabSection-tab"
>
Mac
<img class="TabSection-underline" src="/images/icons/underline.svg" width="51" height="4" aria-hidden="true" />
</button>
<button
role="tab"
aria-selected="false"
aria-controls="windows-tab"
id="windows"
tabindex="-1"
class="TabSection-tab"
>
Windows
<img class="TabSection-underline" src="/images/icons/underline.svg" width="51" height="4" aria-hidden="true" />
</button>
</div>
<div
role="tabpanel"
id="linux-tab"
class="TabSection-tabPanel"
aria-labelledby="linux"
>
<ol>
<li>
<strong>Remove any previous Go installation</strong> by deleting the <code>/usr/local/go</code> folder
(if it exists), then extract the archive you just downloaded into <code>/usr/local</code>, creating a fresh
Go tree in <code>/usr/local/go</code>:
<pre class="CopyPaste">
<span>$ rm -rf /usr/local/go &amp;&amp; tar -C /usr/local -xzf <span id="linux-filename">go1.14.3.linux-amd64.tar.gz</span></span>
<button aria-label="Copy and paste the code.">
<img class="CopyPaste-icon" src="/images/icons/copy-paste.svg" />
<img class="CopyPaste-icon CopyPaste-icon-dark" src="/images/icons/copy-paste-dark.svg" />
</button>
</pre>
<p>
(You may need to run each command separately with the necessary permissions, as root or through <code>sudo</code>.)
</p>
<p>
<strong>Do not</strong> untar the archive into an existing <code>/usr/local/go</code> tree. This is known to
produce broken Go installations.
</p>
</li>
<li>
Add <code>/usr/local/go/bin</code> to the <code>PATH</code> environment variable.
<p>
You can do this by adding the following line to your <code>$HOME/.profile</code> or
<code>/etc/profile</code> (for a system-wide installation):
</p>
<pre class="CopyPaste">
<span>export PATH=$PATH:/usr/local/go/bin</span>
<button aria-label="Copy and paste the code.">
<img class="CopyPaste-icon" src="/images/icons/copy-paste.svg" />
<img class="CopyPaste-icon CopyPaste-icon-dark" src="/images/icons/copy-paste-dark.svg" />
</button>
</pre>
<p>
<strong>Note:</strong> Changes made to a profile file may not apply
until the next time you log into your computer. To apply the changes
immediately, just run the shell commands directly or execute them from
the profile using a command such as
<code>source $HOME/.profile</code>.
</p>
</li>
<li>
<!-- TODO: Update to GOBIN once go.dev/issue/23439 is addressed. -->
Add <code>$HOME/go/bin</code> (the default Go bin path) to your
<code>PATH</code> environment variable to use tools installed via
<code>go install</code>.
<p>
You can do this by adding the following line to your <code>$HOME/.profile</code> or <code>$HOME/.bashrc</code> file:
</p>
<pre class="CopyPaste">
<span>export PATH="$PATH:$(go env GOPATH)/bin"</span>
<button aria-label="Copy and paste the code.">
<img class="CopyPaste-icon" src="/images/icons/copy-paste.svg" />
<img class="CopyPaste-icon CopyPaste-icon-dark" src="/images/icons/copy-paste-dark.svg" />
</button>
</pre>
</li>
<li>
Restart any open terminal sessions for the changes to take effect.
<p><!-- for consistent spacing --></p>
</li>
<li>
Verify that you've installed Go by opening a command prompt and typing
the following command:
<pre class="CopyPaste">
<span>$ go version</span>
<button aria-label="Copy and paste the code.">
<img class="CopyPaste-icon" src="/images/icons/copy-paste.svg" />
<img class="CopyPaste-icon CopyPaste-icon-dark" src="/images/icons/copy-paste-dark.svg" />
</button>
</pre>
</li>
<li>Confirm that the command prints the installed version of Go.</li>
</ol>
</div>
<div
role="tabpanel"
id="mac-tab"
class="TabSection-tabPanel"
aria-labelledby="mac"
hidden
>
<ol>
<li>
Open the package file you downloaded and follow the prompts to install
Go.
<p>
The package installs the Go distribution to <code>/usr/local/go</code>. The package
adds the <code>/usr/local/go/bin</code> directory to your
<code>PATH</code> environment variable by creating a <code>/etc/paths.d/go</code> file.
</p>
</li>
<li>
<!-- TODO: Update to GOBIN once go.dev/issue/23439 is addressed. -->
Add <code>$HOME/go/bin</code> (the default Go bin path) to your
<code>PATH</code> environment variable to use tools installed via
<code>go install</code>.
<p>
You can do this by adding the following line to your <code>~/.zshrc</code> or <code>~/.bash_profile</code> file:
</p>
<pre class="CopyPaste">
<span>export PATH="$PATH:$(go env GOPATH)/bin"</span>
<button aria-label="Copy and paste the code.">
<img class="CopyPaste-icon" src="/images/icons/copy-paste.svg" />
<img class="CopyPaste-icon CopyPaste-icon-dark" src="/images/icons/copy-paste-dark.svg" />
</button>
</pre>
</li>
<li>
Restart any open terminal sessions for the changes to take effect.
<p><!-- for consistent spacing --></p>
</li>
<li>
Verify that you've installed Go by opening a <strong>new</strong> terminal session and typing
the following command:
<pre class="CopyPaste">
<span>$ go version</span>
<button aria-label="Copy and paste the code.">
<img class="CopyPaste-icon" src="/images/icons/copy-paste.svg" />
<img class="CopyPaste-icon CopyPaste-icon-dark" src="/images/icons/copy-paste-dark.svg" />
</button>
</pre>
</li>
<li>Confirm that the command prints the installed version of Go.</li>
</ol>
</div>
<div
role="tabpanel"
id="windows-tab"
class="TabSection-tabPanel"
aria-labelledby="windows"
hidden
>
<ol>
<li>
Open the MSI file you downloaded and follow the prompts to install Go.
<p>
By default, the installer will install Go to <code>Program Files</code>
or <code>Program Files (x86)</code>. You can change the
location as needed. After installing, you will need to close and
reopen any open command prompts so that changes to the environment
made by the installer are reflected at the command prompt.
</p>
</li>
<li>
Verify that you've installed Go.
<ol>
<li>
In <strong>Windows</strong>, click the <strong>Start</strong> menu.
</li>
<li>
In the menu's search box, type <code>cmd</code>, then press the
<strong>Enter</strong> key.
</li>
<li>
In the Command Prompt window that appears, type the following
command:
<pre class="CopyPaste">
<span>$ go version</span>
<button aria-label="Copy and paste the code.">
<img class="CopyPaste-icon" src="/images/icons/copy-paste.svg" />
<img class="CopyPaste-icon CopyPaste-icon-dark" src="/images/icons/copy-paste-dark.svg" />
</button>
</pre>
</li>
<li>Confirm that the command prints the installed version of Go.</li>
</ol>
</li>
</ol>
</div>
</div>
<h2 id="code">You're all set!</h2>
<p class="DocInstall-footer">
Visit the
<a href="tutorial/getting-started.html">Getting Started tutorial</a> to write
some simple Go code. It takes about 10 minutes to complete.
</p>
<script async src="/doc/download.js"></script>
<script async src="/doc/hats.js"></script>