介绍
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 iwr
或 Invoke-WebRequest
允许您从 Web 中提取数据。 这会将脚本传递给 iex
或 Invoke-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
子目录可能包含多个版本控制存储库(例如 Git、Mercurial 和 Bazaar)。 当您的程序导入第三方库时,您将看到类似 github.com
或 golang.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!") }
按 CTRL
和 X
键退出 nano
。 当提示保存文件时,按 Y
,然后按 ENTER
。
此代码将使用 fmt
包并以 Hello, World!
作为参数调用 Println
函数。 当程序运行时,这将导致短语 Hello, World!
打印到终端。
一旦你退出 nano
并返回你的 shell,运行程序:
go run hello.go
您刚刚创建的 hello.go 程序应该会导致 PowerShell 产生以下输出:
OutputHello, World!
在此步骤中,您使用了一个基本程序来验证您的 Go 工作区是否已正确配置。
结论
恭喜! 此时,您已经在本地 Windows 机器上设置了 Go 编程工作区,可以开始编码项目了!