如何在Windows10上安装Go并设置本地编程环境

来自菜鸟教程
跳转至:导航、​搜索

介绍

Go 是一种在谷歌受挫后诞生的编程语言。 开发人员不断地不得不选择一种执行效率高但编译时间长的语言,或者选择一种易于编程但在生产中运行效率低下的语言。 Go 被设计为同时提供所有这三个功能:快速编译、易于编程和生产中的高效执行。

虽然 Go 是一种通用的编程语言,可用于许多不同的编程项目,但它特别适合网络/分布式系统程序,并赢得了“云语言”的美誉。 它专注于帮助现代程序员使用一组强大的工具完成更多工作,通过使格式成为语言规范的一部分来消除对格式的争论,以及通过编译为单个二进制文件来简化部署。 Go 易于学习,关键字非常少,这使其成为初学者和经验丰富的开发人员的绝佳选择。

本教程将指导您在本地 Windows 10 机器上安装 Go 并通过命令行设置编程环境。

先决条件

您将需要一台具有管理访问权限且连接到 Internet 的 Windows 10 计算机。

第 1 步 - 打开和配置 PowerShell

您将在命令行界面上完成大部分安装和设置,这是一种与计算机交互的非图形方式。 也就是说,您将输入文本并通过文本从计算机接收反馈,而不是单击按钮。 命令行,也称为 shell,可以帮助您修改和自动化您每天在计算机上执行的许多任务,是软件开发人员必不可少的工具。

PowerShell 是 Microsoft 提供的一个提供命令行 shell 界面的程序。 管理任务通过运行 cmdlets,发音为 command-lets 来执行,它们是 .NET 软件框架的专用类,可以执行操作。 PowerShell 于 2016 年 8 月开源,现在可跨平台使用,适用于 Windows 和 UNIX 系统(包括 Mac 和 Linux)。

要查找 Windows PowerShell,您可以右键单击屏幕左下角的 Start 菜单图标。 弹出菜单后,点击搜索,然后在搜索栏中输入PowerShell。 当您看到选项时,右键单击桌面应用程序中的 Windows PowerShell。 就本教程而言,选择 以管理员身份运行 。 当您收到询问 是否允许此应用程序更改您的 PC 的对话框时提示您? 单击

完成此操作后,您将看到一个基于文本的界面,其中包含如下所示的字符串:

通过键入以下命令退出系统文件夹:

cd ~

然后,您将位于主目录中,例如 PS C:\Users\sammy

要继续安装过程,您必须首先通过 PowerShell 设置权限。 默认情况下配置为以最安全的模式运行,您可以作为管理员设置几个级别的权限:

  • Restricted 是默认的执行策略。 在这种模式下,您将无法运行脚本,并且 PowerShell 只能作为交互式 shell 工作。
  • AllSigned 将使您能够运行由受信任的发布者签名的所有脚本和配置文件,这意味着您可能会打开您的计算机,从而面临运行碰巧由受信任的发布者签名的恶意脚本的风险.
  • RemoteSigned 将允许您运行从 Internet 下载的由受信任的发布者签名的脚本和配置文件,如果这些受信任的脚本实际上是恶意的,则再次使您的计算机面临漏洞。
  • Unrestricted 将运行从 Internet 下载的所有脚本和配置文件,只要您确认您了解文件是从 Internet 下载的。 在这种情况下,不需要数字签名,因此您可能会打开您的计算机,从而面临运行从 Internet 下载的未签名和潜在恶意脚本的风险。

在本教程中,您将使用 RemoteSigned 执行策略来设置当前用户的权限。 这将允许 PowerShell 接受受信任的脚本,而不会使权限像 Unrestricted 权限那样广泛。 在 PowerShell 中输入以下内容:

Set-ExecutionPolicy -Scope CurrentUser

然后 PowerShell 将提示您提供执行策略。 输入以下内容以使用 RemoteSigned

RemoteSigned

按下 ENTER 后,系统会要求您确认对执行策略的更改。 键入字母 y 以使更改生效。 您可以通过询问机器上的当前权限来确认这是否有效:

Get-ExecutionPolicy -List

您应该会收到如下所示的输出:

Output        Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser    RemoteSigned
 LocalMachine       Undefined

这确认当前用户可以运行从 Internet 下载的受信任脚本。 您现在可以继续下载设置 Go 编程环境所需的文件。

第 2 步 — 安装包管理器 Chocolatey

包管理器 是一组用于自动化安装过程的软件工具。 这包括软件的初始安装、升级和配置,以及根据需要删除软件。 他们将软件安装保存在一个中央位置,并且可以以常用格式维护系统上的所有软件包。

Chocolatey 是一个为 Windows 构建的命令行包管理器,其工作方式与 Linux 上的 apt-get 类似。 Chocolatey 提供开源版本,可帮助您快速安装应用程序和工具。 您将使用它来下载开发环境所需的内容。

在安装脚本之前,请阅读它以确认您对它对您的机器所做的更改感到满意。 为此,请使用 .NET 脚本框架下载 Chocolatey 脚本并将其显示在终端窗口中。

首先创建一个名为 $script 的 WebClient 对象,该对象与 Internet Explorer 共享 Internet 连接设置:

$script = New-Object Net.WebClient

通过将带有 |$script 对象传递到 Get-Member 类来查看可用选项:

$script | Get-Member

这将返回此 WebClient 对象的所有成员(属性和方法):

 . . .
[secondary_label Snippet of Output]
DownloadFileAsync         Method     void DownloadFileAsync(uri address, string fileName), void DownloadFileAsync(ur...
DownloadFileTaskAsync     Method     System.Threading.Tasks.Task DownloadFileTaskAsync(string address, string fileNa...
DownloadString            Method     string DownloadString(string address), string DownloadString(uri address) #method we will use
DownloadStringAsync       Method     void DownloadStringAsync(uri address), void DownloadStringAsync(uri address, Sy...
DownloadStringTaskAsync   Method     System.Threading.Tasks.Task[string] DownloadStringTaskAsync(string address), Sy…
 . . .

查看输出,您可以识别用于在 PowerShell 窗口中显示脚本和签名的 DownloadString 方法。 使用此方法检查脚本:

$script.DownloadString("https://chocolatey.org/install.ps1")

检查脚本后,通过在 PowerShell 中键入以下内容来安装 Chocolatey:

iwr https://chocolatey.org/install.ps1 -UseBasicParsing | iex

cmdlet iwrInvoke-WebRequest 允许您从 Web 中提取数据。 这会将脚本传递给 iexInvoke-Expression cmdlet,后者将执行脚本的内容并运行 Chocolatey 包管理器的安装。

允许 PowerShell 安装 Chocolatey。 完全安装后,您可以使用 choco 命令开始安装其他工具。

如果您以后需要随时升级 Chocolatey,请运行以下命令:

choco upgrade chocolatey

安装包管理器后,您可以安装 Go 编程环境所需的其余部分。

第 3 步 — 安装文本编辑器 Nano(可选)

在这一步中,您将安装 nano,这是一个使用命令行界面的文本编辑器。 您可以使用 nano 直接在 PowerShell 中编写程序。 这不是强制性步骤,因为您也可以使用带有图形用户界面的文本编辑器,例如记事本。 本教程推荐使用 nano,因为它将帮助您习惯使用 PowerShell。

使用 Chocolatey 安装 nano:

choco install -y nano

-y 标志会自动确认您要运行脚本而不提示您确认。

安装 nano 后,您可以使用 nano 命令创建新的文本文件。 您将在本教程后面使用它来编写您的第一个 Go 程序。

第 4 步 — 安装 Go

就像您在上一步中使用 nano 一样,您将使用 Chocolatey 安装 Go:

choco install -y golang

注意:因为go这个词太小了,所以在安装包和上网搜索Go相关文章时,经常使用golang这个词. 术语 Golang 诞生于 Go 的域,即 golang.org


PowerShell 现在将安装 Go,并在该过程中在 PowerShell 中生成输出。 安装完成后,您应该会看到以下输出:

OutputEnvironment Vars (like PATH) have changed. Close/reopen your shell to
see the changes (or in powershell/cmd.exe just type `refreshenv`).
The install of golang was successful.
 Software installed as 'msi', install location is likely default.

Chocolatey installed 1/1 packages.
See the log for details (C:\ProgramData\chocolatey\logs\chocolatey.log).

安装完成后,您现在将确认 Go 已安装。 要查看更改,请以管理员身份关闭并重新打开 PowerShell,然后检查本地计算机上可用的 Go 版本:

go version

您将收到类似于以下内容的输出:

Outputgo version go1.12.1 windows/amd643.7.0

安装 Go 后,您可以为开发项目设置工作区。

第 5 步 — 创建您的 Go 工作区

现在您已经安装了 Chocolatey、nano 和 Go,您可以创建您的编程工作区。

Go 工作区将在其根目录包含两个目录:

  • src:包含 Go 源文件的目录。 源文件是您使用 Go 编程语言编写的文件。 Go 编译器使用源文件来创建可执行的二进制文件。
  • bin:包含由 Go 工具构建和安装的可执行文件的目录。 可执行文件是在您的系统上运行并执行任务的二进制文件。 这些通常是由您的源代码或其他下载的 Go 源代码编译的程序。

src 子目录可能包含多个版本控制存储库(例如 GitMercurialBazaar)。 当您的程序导入第三方库时,您将看到类似 github.comgolang.org 的目录。 如果您使用像 github.com 这样的代码存储库,您还将把项目和源文件放在该目录下。 这允许在您的项目中规范地导入代码。 Canonical 导入是引用完全限定包的导入,例如 github.com/digitalocean/godo

以下是典型工作区的外观:

.
├── bin
│   ├── buffalo                                      # command executable
│   ├── dlv                                          # command executable
│   └── packr                                        # command executable
└── src
    └── github.com
        └── digitalocean
            └── godo
                ├── .git                            # Git repository metadata
                ├── account.go                      # package source
                ├── account_test.go                 # test source
                ├── ...
                ├── timestamp.go
                ├── timestamp_test.go
                └── util
                    ├── droplet.go
                    └── droplet_test.go

从 1.8 开始,Go 工作区的默认目录是用户的主目录,其中包含 go 子目录或 $HOME/go。 如果您使用的是早于 1.8 的 Go 版本,仍然认为最佳做法是为您的工作区使用 $HOME/go 位置

发出以下命令以导航到 $HOME 目录:

cd $HOME

接下来,为您的 Go 工作区创建目录结构:

mkdir go/bin, go/src

这将确保以下目录结构现在到位:

└── $HOME
    └── go
        ├── bin
        └── src

在 Go 1.8 之前,需要设置一个名为 $GOPATH 的本地环境变量。 虽然不再明确要求这样做,但它仍然被认为是一种很好的做法,因为许多第三方工具仍然依赖于设置的这个变量。

由于您使用 Chocolatey 进行安装,因此应该已经设置了此环境变量。 您可以使用以下命令验证这一点:

$env:GOPATH

您应该会看到以下输出,其中您的用户名代替了 sammy

OutputC:\Users\sammy\go

Go 编译安装工具时,会将它们放在 $GOPATH/bin 目录下。 为方便起见,通常将工作区的 bin 子目录添加到 $PATH 中。 您可以使用 PowerShell 中的 setx 命令执行此操作:

setx PATH "$($env:path);$GOPATH\bin"

现在,这将允许您在系统上的任何位置运行通过 Go 工具编译或下载的任何程序。

现在您已经创建了工作空间的根目录并设置了 $GOPATH 环境变量,您将创建具有以下目录结构的未来项目。 此示例假设您使用 github.com 作为您的存储库:

$GOPATH/src/github.com/username/project

如果你在 https://github.com/digitalocean/godo 项目上工作,你可以把它放在以下目录中:

$GOPATH/src/github.com/digitalocean/godo

以这种方式构建项目将使项目可以使用 go get 工具。 它也将有助于以后的可读性。

您可以通过使用 go get 命令获取 godo 库来验证这一点:

go get github.com/digitalocean/godo

注意:如果你没有安装git,Windows会打开一个对话框询问你是否要安装它。 单击 继续并按照安装说明进行操作。


通过列出目录可以看到它成功下载了godo包:

ls $env:GOPATH/src/github.com/digitalocean/godo

您将收到与此类似的输出:

Output    Directory: C:\Users\sammy\go\src\github.com\digitalocean\godo


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----        4/10/2019   2:59 PM                util
-a----        4/10/2019   2:59 PM              9 .gitignore
-a----        4/10/2019   2:59 PM             69 .travis.yml
-a----        4/10/2019   2:59 PM           1592 account.go
-a----        4/10/2019   2:59 PM           1679 account_test.go
-rw-r--r--  1 sammy  staff   2892 Apr  5 15:56 CHANGELOG.md
-rw-r--r--  1 sammy  staff   1851 Apr  5 15:56 CONTRIBUTING.md
.
.
.
-a----        4/10/2019   2:59 PM           5076 vpcs.go
-a----        4/10/2019   2:59 PM           4309 vpcs_test.go

在此步骤中,您创建了一个 Go 工作区并配置了必要的环境变量。 在下一步中,您将使用一些代码测试工作区。

第 6 步 — 创建一个简单的程序

现在您已经设置了 Go 工作区,创建一个简单的“Hello, World!” 程序。 这将确保您的工作区配置正确,并让您有机会更加熟悉 Go。 因为您正在创建单个 Go 源文件,而不是实际项目,所以您不需要在工作区中执行此操作。

在您的主目录中,打开一个命令行文本编辑器,例如 nano,然后创建一个新文件:

nano hello.go

在 nano 中打开文本文件后,输入您的程序:

你好.go

package main

import "fmt"

func main() {
    fmt.Println("Hello, World!")
}

CTRLX 键退出 nano。 当提示保存文件时,按 Y,然后按 ENTER

此代码将使用 fmt 包并以 Hello, World! 作为参数调用 Println 函数。 当程序运行时,这将导致短语 Hello, World! 打印到终端。

一旦你退出 nano 并返回你的 shell,运行程序:

go run hello.go

您刚刚创建的 hello.go 程序应该会导致 PowerShell 产生以下输出:

OutputHello, World!

在此步骤中,您使用了一个基本程序来验证您的 Go 工作区是否已正确配置。

结论

恭喜! 此时,您已经在本地 Windows 机器上设置了 Go 编程工作区,可以开始编码项目了!