Windows 系統的 Gopher 們久等了!!
今天我們將介紹《如何在 Windows 10 上安裝 Go 和設置本地編程環境》,以供不同系統使用者選擇學習。
話不多說,我們開始 :
如何在 Windows 10 上安裝 Go 和設置本地編程環境
Go 語言簡介
Go 是一門在 Google 備受挫折後而誕生的語言。開發者不得不頻繁地在兩門語言中選擇,要麼選擇一門執行效率高但是編譯時間長的語言,要麼選擇一種易於編程但在生產中運行效率低下的語言。Go 被設計爲同時提供所有這三個功能:快速編譯、易於編程和生產中的高效執行。
雖然 Go 是一門通用的編程語言,可用於許多不同類型的編程項目。但它特別適合網絡 / 分佈式系統項目,贏得了 “雲語言” 的美譽。Go 語言專注於通過一組強大的工具來幫助現代程序員完成更多的工作,通過使格式成爲語言規範的一部分來消除對格式的爭論,以及通過編譯爲單個二進制文件來簡化部署。Go 易於學習,關鍵字非常少,這使其成爲不論是初學者還是經驗豐富的開發人員的不二之選。
本教程將指導你通過命令行來安裝 Go 和配置 Go 編程環境。本教程特別針對 Ubuntu 18.04 的安裝過程,但是對於其他 Debian Linux 發行版也同樣適用。
安裝前提
你需要一臺擁有管理員權限並且能夠連接上網的 Windows 10 的電腦。
第一步:打開並配置 PowerShell
我們將會在終端上完成我們大部分的安裝和設置,這是一種與計算機交互的非圖形化方式。也就是說,你輸入的是文本,然後也是通過文本得到計算機的反饋,而不是點擊按鈕。命令行,也就是我們熟知的 shell 或者 終端 ,可以幫助你修改或自動化很多你每天執行在計算機上的任務,這是軟件開發人員必備的工具。
PowerShell 是微軟提供的一個命令行 shell 界面的程序。通過 cmdlets
(發音爲 command-lets
)來執行管理任務,它們是 .NET 軟件框架可以執行操作的專用類。PowerShell 於 2016 年 8 月開源,現在可跨平臺使用,適用於 Windows 和 UNIX 系統(包括 Mac 和 Linux)。
如何找到 Windows PowerShell 呢,你可以右擊屏幕左下角的開始按鈕,彈出菜單後,點擊搜索,然後在搜索欄中輸入 PowerShell
。當你看到選項時,右擊桌面應用程序中的 Windows PowerShell。出於本教程的目的,選擇以管理員身份運行。當系統提示你出現一個對話框,詢問是否允許此應用程序對您的 PC 進行更改? 單擊是。
完成此操作後,你將看到一個基於文本的界面,其中包含如下所示的字符串:
Windows 10 PowerShell
輸入以下命令退出系統文件夾:
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
一旦你按了回車鍵,系統會要求你確認對執行政策的更改。輸入字母 y
以使更改生效。你可以通過詢問機器上的當前權限來確認這是否生效:
Get-ExecutionPolicy -List
你應該會收到如下所示的輸出:
Output
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser RemoteSigned
LocalMachine Undefined
這表明當前用戶可以運行從 Internet 下載的受信任腳本。你現在可以繼續下載設置 Go 編程環境所需的文件。
第二步:安裝包管理器 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 編程環境所需的其餘部分。
第三步:裝文本編輯器 Nano (可選)
在這一步中,你將安裝 nano,這是一個使用命令行界面的文本編輯器。你可以使用 nano 直接在 PowerShell 中編寫程序。這不是強制性步驟,因爲你也可以使用帶有圖形用戶界面的文本編輯器,例如 Notepad 。本教程推薦使用 nano,因爲它將幫助你習慣使用 PowerShell。
使用 Chocolatey 安裝 nano:
choco install -y nano
-y
標誌會自動確認你要運行腳本,而不會提示你確認。
安裝 nano 後,你可以使用 nano
命令創建新的文本文件。你將在本教程後面使用它來編寫你的第一個 Go 程序。
第四步:安裝 Go
就像你在上一步中安裝 nano 一樣,你將使用 Chocolatey 安裝 Go:
choco install -y golang
注意: 因爲 go
是一個很小的詞,所以使用 golang
作爲安裝包的術語, 這也是在互聯網上搜索 Go 相關文章時的常見做法。Golang
一詞源於 Go 的域,即 golang.org
PowerShell 安裝 Go 的過程中,會在 PowerShell 中生成輸出內容。安裝完成後,你應該會看到以下輸出:
Output
Environment 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
你將得到類似以下內容的輸出:
output
go version go1.12.1 windows/amd643.7.0
安裝 Go 後,你可以爲開發項目設置工作區。
第五步:創建你的 Go 工作區
現在你已經安裝了 Chocolatey、nano 和 Go,可以接着創建你的編程工作區。
Go 語言的工作區在其根目錄下包含兩個目錄:
-
src
: 該目錄包含 Go 的源文件。所謂源文件就是你用 Go 編程語言寫的文件。源文件被 Go 編譯器構建成可執行的二進制文件。 -
bin
: 該目錄包含了 Go 工具構建和安裝的可執行文件。可執行文件就是運行在你係統上並執行任務的二進制文件。通常是你的源碼或者是其他下載的 Go 源代碼編譯的程序。
src
子目錄可能包含多個版本控制倉庫(例如 Git, Mercurial 和 Bazaar)。當你引入第三方庫的時候,你可以看到類似 github.com
, golang.org
或其他目錄,如果你使用的是 github.com
之類的代碼倉庫,你還將把項目和源文件放在該目錄下。我們將在此步驟的後面部分探討這個概念。這允許你在你的項目中規範導入代碼。規範導入就是引用完全限定包的導入,例如 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 工作區的默認目錄是用戶的 home 目錄,並帶有 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
的本地環境變量。$GOPATH
告訴編譯器在哪裏可以找到導入的第三方源代碼,同樣包括任何你寫的本地源代碼。雖然不再明確要求它,但它仍然被認爲是一種很好的做法,因爲許多第三方工具仍然依賴於設置的這個變量。
由於你使用 Chocolatey 進行安裝,因此應該已經設置了此環境變量。你可以使用以下命令驗證這一點:
$env:GOPATH
你應該會看到以下輸出,其中 sammy
代替了你的用戶名:
output
C:\Users\sammy\go
當 Go 編譯和安裝工具時,會將他們放在 $GOPATH/bin
目錄。爲方便起見,通常將工作區的 /bin
子目錄添加到 ~/.profile
中的 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 會打開一個對話框詢問你是否要安裝它。單擊 Yes 繼續並按照安裝說明進行操作。
你可以通過列出目錄來檢查下看看是否成功下載了 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 工作區並且配置了必要的環境變量。下一步你將使用一些代碼來測試下工作區。
第六步:創建一個簡單的程序
現在你已經設置了工作區,來創建一個 “Hello, World!” 程序吧。這可以檢驗工作區配置是否正確,並且給你一個更加熟悉 Go 的機會。因爲我們創建的是單個 Go 源文件,而不是實際項目,所以我們不需要在工作區中執行此操作。
在你的 home 目錄,打開一個命令行文本編輯器,例如 nano
,然後創建一個新文件:
nano hello.go
在 nano 中打開文本文件後,輸入你的程序代碼:
hello.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 產生以下輸出:
output
Hello, World!
在此步驟中,你使用了一個簡單小程序來驗證是否正確配置了 Go 工作區。
總結
恭喜!至此,你已經在 Ubuntu 機器上設置了 Go 編程工作區,可以開始寫項目了!
相關鏈接:
Go : https://golang.org/
PowerShell : https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/powershell
.NET : https://dotnet.microsoft.com/
Chocolatey : https://chocolatey.org/
Git : https://git-scm.com/
Mercurial : https://www.mercurial-scm.org/
Bazaar : http://bazaar.canonical.com/
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/R82eASuhja-kEb_Qwe7p3Q