Files
build-web-application-with-…/zh-tw/02.1.md
2019-02-26 01:40:54 +08:00

3.2 KiB
Raw Blame History

2.1 你好Go

在開始編寫應用之前我們先從最基本的程式開始。就像你造房子之前不知道什麼是地基一樣編寫程式也不知道如何開始。因此在本節中我們要學習用最基本的語法讓Go程式執行起來。

程式

這就像一個傳統,在學習大部分語言之前,你先學會如何編寫一個可以輸出hello world的程式。

準備好了嗎Let's Go!


package main

import "fmt"

func main() {
	fmt.Printf("Hello, world or 你好,世界 or καλημ ́ρα κóσμ or こんにちはせかい\n")
}

輸出如下:

Hello, world or 你好,世界 or καλημ ́ρα κóσμ or こんにちはせかい

詳解

首先我們要了解一個概念Go程式是透過package來組織的

package <pkgName>(在我們的例子中是package main)這一行告訴我們當前檔案屬於哪個套件,而套件名main則告訴我們它是一個可獨立執行的套件,它在編譯後會產生可執行檔案。除了main套件之外,其它的套件最後都會產生*.a檔案(也就是套件檔案)並放置在$GOPATH/pkg/$GOOS_$GOARCH以Mac為例就是$GOPATH/pkg/darwin_amd64)。

每一個可獨立執行的Go程式必定包含一個package main,在這個main套件中必定包含一個入口函式main,而這個函式既沒有引數,也沒有返回值。

為了列印Hello, world...,我們呼叫了一個函式Printf,這個函式來自於fmt套件,所以我們在第三行中匯入了系統級別的fmt套件:import "fmt"

套件的概念和Python中的package類似它們都有一些特別的好處模組化能夠把你的程式分成多個模組)和可重用性(每個模組都能被其它應用程式反覆使用)。我們在這裡只是先了解一下套件的概念,後面我們將會編寫自己的套件。

在第五行中,我們透過關鍵字func定義了一個main函式,函式體被放在{}大括號就像我們平時寫C、C++或Java時一樣。

大家可以看到main函式是沒有任何的引數的我們接下來就學習如何編寫帶引數的、返回0個或多個值的函式。

第六行,我們呼叫了fmt套件裡面定義的函式Printf。大家可以看到,這個函式是透過<pkgName>.<funcName>的方式呼叫的這一點和Python十分相似。

前面提到過,套件名和套件所在的資料夾名可以是不同的,此處的<pkgName>即為透過package <pkgName>宣告的套件名,而非資料夾名。

最後大家可以看到我們輸出的內容裡面包含了很多非ASCII碼字元。實際上Go是天生支援UTF-8的任何字元都可以直接輸出你甚至可以用UTF-8中的任何字元作為識別符號。

結論

Go使用package和Python的模組類似來組織程式碼。main.main()函式(這個函式位於主套件是每一個獨立的可執行程式的入口點。Go使用UTF-8字串和識別符號(因為UTF-8的發明者也就是Go的發明者之一),所以它天生支援多語言。