---
# System prepended metadata

title: 第一支程式

---

# 第一支程式

## Hello World

新增一個 `.go` 格式的檔案，並複製貼上以下代碼：

```go
package main

import "fmt"

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

這段代碼會output出 Hello World 字樣。

![](https://i.imgur.com/PU4jdZa.png)

Go語言原生支持Unicode標準，所以你可以用Go語言處理世界上的任何自然語言。

現在稍微解釋一下這段代碼的意思。

### Package(包)
程式碼的目錄，可以重複利用程式的方案，方便維護。Go默認提供很多package，ex：fmt、is…等，開發者也可以創建自己的package。

**package要求所有檔案的第一行添加package名稱，標示該文件所歸屬的package。**

```go=
package main //package main表示一個可獨立執行的程序，每個 Go 應用程序都包含一個名為 main 的包。
```

關於package的部分後續會有更詳細的介紹，這邊簡短帶過。

### 套件
第六行是使用了fmt套件的Printf函式來打印字串，因此我們需要先在第三行匯入 fmt 套件

```go=
import "fmt"
```

呼叫套件裡的函式是透過 `packageName.funcName` 來呼叫的。

fmt使用與C的printf和scanf類似，但更簡單。

官方文檔：https://golang.org/pkg/fmt/

### func (函式)
第五行 `func main(){ //code }` 是透過關鍵字 func 定義了一個 main 函式，函式體被放在{ } 之中，與C,C++,JAVA…等程式語言用法近乎相同。

main 函數是每一個可執行程序所必須包含的，一般來說都是在啟動後第一個執行的函數

## 運行程序

### go run
通過go底下的run子命令來將 以`.go`結尾的源文件 和 關聯庫 連結到一起，運行最終的可執行文件。

```go=
$ go run fileName.go
Hello World
```

### go build
如果你希望自己的程序能重複運行，那麽就需要去編譯這個程序，並且能夠將編譯結果保存下來以備將來之用。這個可以用build子命令來實現：

```go=
$ go build fileName.go
$ ./fileName
Hello World
```

這會創建一個名爲 fileName 的可執行的二進制檔案（在Windows系統下生成的是.exe執行檔），之後你可以在任何時間去運行這個二進制文件，不需要其它的任何處理。

## 注意事項

1.要特別特別注意的是，在Go語言中 `{` **不能**獨立一行，會報錯。

```go=
// 1 正確寫法
func printHello() {
	//Code
}

// 2 錯誤寫法 { 單獨一行
func printHello() 
{
	//Code
}
```

2.Go語言中不需要在每一個語句後面加上 `;` 分號，Go編譯器會自動完成。如果要將多個語句寫在同一行才需要使用 `;` 作為區分，但實際開發中並不建議這樣寫。

3.每個package中只能有一個 `main()` 函數，否則會報 `main redeclared in this block previous declaration at ..` 的錯誤。