1. 程式人生 > >GO語言學習一 Hello World!

GO語言學習一 Hello World!

文章目錄

環境準備

Go語言當前支援Windows、MacOS、Linux三大主流PC平臺,另外也提供了原始碼包,開發者可以為自己的平臺編譯安裝。
不論是使用了安裝器還是從原始碼編譯安裝,在那之後,都需要確保環境已經正確配置好了。開啟一個命令列終端,輸入命令:

go version

如果你的終端上顯示的內容有類似於“not found”或“not recognnized”這樣的錯誤資訊,意味著你需要對你的go執行環境作一些準備工作。

GOROOT環境變數

在類Unix系統中,你可以使用export來設定環境變數,也可以通過類似.bashrc這樣的配置檔案讓設定在每次登入時都有效:(假設您的go安裝在$HOME/opt/go目錄下)

export GOROOT=$HOME/opt/go
export PATH=$PATH:$GOROOT/bin

在Windows中,可以通過set命令來設定GOROOT,也可以通過在高階系統設定-環境變數中的配置讓設定在每次登入時都有效:(假設您的go安裝在d:\go目錄下)

set GOROOT=d:\go
set PATH=%PATH%;%GOROOT%\bin

現在你應該可以在命令列視窗中使用go version命令來檢視go版本了,以下是Windows下的正常執行結果:

C:\> go version
go version go1.11.1 windows/amd64

第一個程式

為每個專案建立一個工作目錄是個好習慣。
在類Unix系統下我們來建立一個$HOME\go_proj目錄作為我們的工作目錄:

~$ mkdir $HOME/go_proj
~$ cd $HOME/go_proj
~/go_proj$ 

在Windows系統下我們可以這樣建立:

c:\> md d:\go_proj
c:\>cd /d d:\go_proj
d:\go_proj>

不管在哪個系統下,我們把創建出來go_proj稱為我們的工作目錄了。
現在讓我們從最簡單的hello world程式開始吧。把以下內容儲存到工作目錄下的hello.go檔案

package main

import "fmt"

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

編譯一下:

go build

可以看到,在工作目錄下多了一個名為go_proj的可執行程式。試著執行它看看:

d:\go_proj> go_proj
Hello World!

如果你看到上面的輸入,就表示我們的第一個程式可以正確工作啦!

程式結構

Go語言的原始碼文字使用Unicode字符集UTF-8編碼儲存,這一點請童鞋們記一記哦!(字符集和編碼規則不是本書要討論的)

Go語言原始碼從結構上說由三部分構成:

  1. package語句:必須。指出本原始碼檔案屬於哪個包。
  2. import宣告:非必須。指出本原始碼檔案使用了哪些個包。
  3. 程式主體:非必須。除開以上兩部分都屬於程式主體。

可以看到,上面的hello world程式雖然簡單,但它已經包含了一個go語言可執行程式的所有元素。在go語言中一個可執行程式必須要有一個包名為“main”的主包,以及一個函式名為“main”的無引數且無返回值函式。

Go程式是把不同的包連結到一起而構成的。一個包可以拆分成多個原始檔,只要在原始檔中使用package語句指出它所屬的包就可以了。

匯入

Go語言標準庫提供了大量的包,這些包存在於go安裝目錄(參見GOROOT環境變數)下的src目錄內,它們可以完成許多功能。Hello world程式中匯入的fmt包就是go語言標準庫提供的包。它提供了格式化輸入輸出的功能。
import宣告有兩種格式:

import "包路徑"
import (
	"包1路徑"2別名 "包2路徑"
)

除了Go語言標準庫提供的包,還有很多第三方的包可以使用,使用者也可以建立自定義的包。我們可以選擇把這些包放入go語言標準庫所在的目錄,但更一般的做法是將它們放在自己定義的go目錄樹中,也就是GOPATH環境變數指出的目錄。

GOPATH環境變數

預設情況下,GOPATH在使用者主目錄(類UNIX系統上是$HOME,在windows系統上是%USERPROFILE%)的go目錄。
GOPATH和PAH環境變數一樣,可以有多個值。import語句會在每個GOPATH目錄下搜尋要匯入的包。
每個GOPATH目錄都必須具有規定的結構:

  • src 目錄存放包的原始碼,其下的每個子目錄就是import宣告中的包路徑
  • pkg目錄存放已經安裝的包物件
  • bin 目錄存放已經編譯了的程式

可以使用go get命令下載第三方包,下載的包存入第一個有效的GOPATH目錄下。