Skip to content

Editorial changes for chapter 2 (zh-tw) #1111

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Sep 18, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 9 additions & 9 deletions zh-tw/02.1.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

## 程式

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

準備好了嗎?Let's Go!

Expand All @@ -22,30 +22,30 @@ func main() {
Hello, world or 你好,世界 or καλημ ́ρα κóσμ or こんにちはせかい

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

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

>每一個可獨立執行的 Go 程式,必定包含一個`package main`,在這個 `main` 套件中必定包含一個入口函式`main`,而這個函式既沒有參數,也沒有回傳值。
>每一個可獨立執行的 Go 程式,必定包含一個 `package main`,在這個 `main` 套件中必定包含一個入口函式 `main`,而這個函式既沒有參數,也沒有回傳值。
為了列印`Hello, world...`,我們呼叫了一個函式`Printf`,這個函式來自於 `fmt` 套件,所以我們在第三行中匯入了系統級別的 `fmt` 套件:`import "fmt"`
為了列印 `Hello, world...` ,我們呼叫了一個函式 `Printf`,這個函式來自於 `fmt` 套件,所以我們在第三行中匯入了系統級別的 `fmt` 套件:`import "fmt"`

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

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

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

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

>前面提到過,套件名和套件所在的資料夾名可以是不同的,此處的 `<pkgName>` 即為透過`package <pkgName>`宣告的套件名,而非資料夾名。
>前面提到過,套件名和套件所在的資料夾名可以是不同的,此處的 `<pkgName>` 即為透過 `package <pkgName>` 宣告的套件名,而非資料夾名。
最後大家可以看到我們輸出的內容裡面包含了很多非 ASCII 碼字元。實際上,Go 是天生支援 UTF-8 的,任何字元都可以直接輸出,你甚至可以用 UTF-8 中的任何字元作為識別符號。


## 結論

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

## links
* [目錄](<preface.md>)
Expand Down
Loading