首頁  >  文章  >  後端開發  >  Go語言兩種版本的Hello world你會嗎

Go語言兩種版本的Hello world你會嗎

angryTom
angryTom轉載
2019-11-28 14:20:042448瀏覽

學習一種程式語言,除了基本的語法,更重要的是要了解如何在實際的工程中使用它。本文中,我會和大家一起,從零開始,安裝Go語言,配置環境,安裝IDE,開發一個Hello World程式。這個Hello World版我會寫兩個版本:GOPATH和Go Module版本。

Go語言兩種版本的Hello world你會嗎

Q:
本教學為什麼要寫兩個版本?
A:
網路上大部分Go語言Hello World都只簡單地介紹了GOPATH版本。但從Go的1.11版本之後,就不再建議使用GOPATH來建構應用了。也就是說GOPATH被認為是廢棄的,錯誤的做法。
正確的做法是使用Go Module。所以,有必要在教程中將這個資訊告訴初學者,引導大家使用建議的最佳實踐方式Go Module。
或許這也是本Hello World教學和網路大部分教學的差別吧。會從開發者的實際使用出發。介紹Go語言的發展歷史和最佳實踐。

安裝Go

使用Go語言開發,第一步一定是安裝Go啦。

第一步:進入Go語言的官網https://golang.org。點擊“Download Go”。是的,就是那個傻傻的土撥鼠^_^

Go語言兩種版本的Hello world你會嗎
第二步:依照作業系統下載對應的軟體包進行安裝。

Golang對主流的作業系統都有支持,例如Windows,MacOS和Linux等。
本系列教學中,我會使用MacOS作業系統,所以選擇下載「Apple macOS」。大家要依照自己的作業系統進行下載。
Go語言兩種版本的Hello world你會嗎
第三步:安裝Go。

在MacOS下安裝Go很簡單,就是標準的DMG檔案安裝,直接「下一步」就可以了。

第四步:確認Go是否安裝成功。

執行指令“go version”,會輸出類似“go version go1.12.9 darwin/amd64”的內容。請確保包沒有任何錯誤發生。

設定環境

和其他開發語言類似,安裝了Go之後,還需要對開發環境進行對應的設定。例如在Java中,需要設定JAVA_HOME,MAVEN等。
Go開發相關的環境變數如下:

● GOROOT:GOROOT就是Go的安裝目錄。

● GOPATH:GOPATH保存go專案代碼。

GOROOT

GOROOT是Go的安裝路徑。 Mac中安裝Go會自動設定好GOROOT,路徑為/usr/local/go。 GOROOT在絕大多數情況下都不需要修改。以下是GOROOT目錄的內容(已省略了一些無關資訊):

tree -L 2 /usr/local/go

./
├── bin
│   ├── go
│   └── gofmt
├── doc
│   ├── articles
│   └── docs.html
├── src
│   ├── errors
│   ├── fmt
│   ├── log
│   └── os

可以看到GOROOT下有bin,doc和src目錄。 bin目錄下有我們熟悉的gogofmt工具。可以認為GOOROOT和Java裡的JDK目錄類似。

GOPATH

GOPATH是開發時的工作目錄。用於:

● 保存編譯後的二進位檔。

● go get和go install指令會下載go代碼到GOPATH。

● import套件時的搜尋路徑。

關於GOPATH需要特別注意。在GO的1.11版本之前,GOPATH是必要的,而且所有的Go專案程式碼都要保存在GOPATH目錄下。 Go的1.11版本之後,GO官方引進了Go Module。使用Go Module管理的專案可以放在GOPATH目錄外。

使用GOPATH時,GO會在以下目錄中搜尋套件:

1. GOROOT/src:此目錄保存了Go標準函式庫程式碼。

2. GOPATH/src:此目錄保存了應用自身的程式碼和第三方依賴的程式碼。

假設程式中引入瞭如下的套件:

import "github.com/tom/hello-go/foo/bar"

第一步:Go會先去GOROOT的scr目錄中查找,很顯然它不是標準庫的包,沒找到。

第二步:繼續在GOPATH的src目錄去找,準確地說是GOPATH/src/github.com/tom/hello-go/foo/bar這個目錄。如果該目錄不存在,會報錯找不到package。使用GOPATH管理專案時,需要依照GO尋找package的規範來合理地保存和組織Go程式碼。

Go的这个“将所有代码都放置在GOPATH中”的设计,的确是和其他主流语言很不一样。不管Go官方是出于什么考虑,这个设计在实际使用中,的确给开发者造成了很大的不便和理解上的困难。甚至直接劝退了很多Go的初学者。

万幸的是,Go Module正式发布了。Go Module的发布解决了困扰Go语言长达十年的代码组织,依赖管理问题。

说明:关于GOPATH和Go Module的历史渊源,详细使用,会在另一篇进行说明。本文还是聚焦在Hello World入门。

另外,由于某些原因,Go的某些托管在Google仓库中的代码在国内是无法访问的。如果使用Go Module,我们可以设置GOPROXY,让Go从GOPROXYGo語言兩種版本的Hello world你會嗎代码,速度更快。国内用户可以设置GOPROXY为https://goproxy.cn,使用如下命令来设置GOPROXY:

export GOPROXY=https://goproxy.cn

关于环境配置,总结下来就是:

● 如果使用Go Module(推荐的),设置export GOPROXY=https://goproxy.cn。

● 如果使用GOPATH(遗留的,被废弃的),需要设置GOPATH到本地的某个目录。

安装IDE

目前比较常用的IDE有:

● Visual Studio Code

● GoLand

Visual Studio Code是微软开发的一款开源的,轻量级的文本编辑器。通过安装Go插件,可以用于Go语言的开发。GoLand是JetBrains公司开发的,专业的Go语言开发IDE。

推荐使用GoLand。很多人都说Visual Studio Code更轻量级,但作为一款每天都要重度使用的,需要靠它吃饭的工具,我们需要的是功能全面。尤其是当你需要完备的调试,需要强大的IDE智能辅助功能时,相信你会选择更专业的GoLand。

GoLand的官方主页为https://www.jetbrains.com/go/,点击“Download”即可下载

注意
GoLand使用的是和IntelliJ IDEA一样的框架,是用Java语言开发的。你需要安装Java环境才可以运行GoLand哦。

GoLand是收费软件,只有30天的试用期。试用期结束后,需要购买授权。当然在天朝,我们都习惯不花钱用软件。大家可以自行百度或google搜索一下。

Hello World(GOPATH版)

第一步:设置GOPATH

首先设置GOPATH,假设GOPATH设置为$HOME/worspace/go。

第二步:创建子目录

进入$HOME/workspace/go目录。新建子目录src。然后再src中新建子目录hello。在hello目录,新建一个hello-world.go文件:

目录结构应该如下所示:

$HOME
  workspace
    go
      src
        hello
          hello-world.go

第三步:创建hello-world.go文件:

package main
import "fmt"
func main() {
    fmt.Println("hello world")
}

第四步:执行go build

在$HOME/workspace/go目录执行命令:

go build

会生成一个可执行二进制文件:hello。如果是Windows系统,会生成hello.exe文件。
第五步:运行hello文件:

./hello

hello world

输出“hello world”。

Hello World(GO Module版)

第一步:创建项目的根目录

任意创建一个目录(可以不在GOPATH中),假设是$HOME/tmp/hello。

第二步:初始化Go模块

执行命令:

go mod init github.com/vangoleo/hello

该命令会将hello目录初始化为一个Go module,并生成一个$HOME/tmp/hello/go.mod文件。内容如下:

module github.com/vangoleo/hello

go 1.12

第三步:编写hello.go文件

编写文件$HOME/tmp/hello/hello.go:

package main

import (
    "fmt"
    "rsc.io/quote"
)

func main() {
    fmt.Println(quote.Hello())
}

第四步:编辑go.mod文件:

在实际项目中,都会使用到第三方库。可以在Go Module中添加项目的依赖。本例中,我们会添加一个quote依赖,该依赖会打印当前语言的“Hello World”,比如,如果是中文环境,会打印“你好,世界”。

编辑go.mod文件,添加quote依赖:

module github.com/vangoleo/hello

go 1.12

require rsc.io/quote v1.5.2

第五步:执行go build

执行go build,会生成可执行文件$HOME/tmp/hello/hello。

第六步:执行hello文件

执行hello文件,输出“你好,世界”。

推荐:go语言教程  

以上是Go語言兩種版本的Hello world你會嗎的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:cnblogs.com。如有侵權,請聯絡admin@php.cn刪除