Like Share Discussion Bookmark Smile

J.J. Huang   2025-01-12   Getting Started Golang 00.簡單介紹   瀏覽次數:次   DMCA.com Protection Status

Go | 如何將程式編譯與執行

💬簡介

在 Go 程式開發中,編譯與執行是將程式轉換為可執行檔並在電腦上執行的過程。Go 語言的編譯過程非常簡單,並且提供了快速高效的編譯與運行體驗。本篇文章將介紹如何將 Go 程式編譯並產生可執行檔,並講解在不同平台上的執行步驟。

圖片來源:Gophers (地鼠造型的原創者為 Renee French)


🔎 如何編譯與執行 Go 程式?

🖥️ 編譯並執行 Go 程式

Go 的編譯過程相對簡單,主要透過 go buildgo run 兩個指令來編譯並執行程式。

📌 使用 go build 編譯程式

go build 會將 Go 程式編譯成可執行檔,並產生一個對應系統的可執行檔(Windows, macOS, Linux … 等)。例如:

  1. 創建一個簡單的 Go 程式 hello.go
    1
    2
    3
    4
    5
    6
    7
    package main

    import "fmt"

    func main() {
    fmt.Println("Hello, Go!")
    }
  2. 在命令行中,進入程式所在的目錄,並執行以下指令來編譯程式:
    1
    go build hello.go
  3. 執行結果:
    在命令行中,會看到一個名為 hello(在 Windows 上是 hello.exe)的可執行檔。執行這個檔案來運行程式:
    1
    ./hello
    執行結果:
    1
    Hello, Go!

📌 使用 go run 直接執行程式

go run 允許開發者直接編譯並執行 Go 程式,通常在開發過程中使用,以便快速測試程式。這樣,不需要先產生可執行檔,再執行。

在命令行中,直接使用以下指令:

1
go run hello.go

執行結果:

1
Hello, Go!

使用 go run 主要的好處是簡化開發過程,省略了產生可執行檔的步驟,對於小型程式或測試程式碼非常方便。


🚀 跨平台編譯

Go 語言支援跨平台編譯,能夠在一個平台上編譯程式並在其他平台上執行。這是 Go 的一大優勢,尤其適合開發需要在不同系統上運行的應用。

📌 編譯為 Windows 可執行檔(在 Linux 或 macOS 上)

可以通過設置 GOOSGOARCH 環境變數來編譯適用於不同操作系統的程式。例如,在 Linux 系統上編譯一個 Windows 可執行檔:

1
GOOS=windows GOARCH=amd64 go build hello.go

這會產生適用於 Windows 的 hello.exe 檔案,可以在 Windows 上運行。

📌 編譯為 macOS 或 Linux 可執行檔(在 Windows 上)

同樣的,可以在 Windows 上編譯一個 Linux 或 macOS 可執行檔。例如,在 Windows 上編譯一個 Linux 可執行檔:

  • AMD64
    1
    2
    3
    $env:GOOS="linux"
    $env:GOARCH="amd64"
    go build hello.go
  • ARM64
    1
    2
    3
    $env:GOOS="darwin"
    $env:GOARCH="amd64"
    go build hello.go

這樣產生的可執行檔可以在 macOS 或 Linux 上運行,而不需要額外安裝 Go 開發環境。


🛠️ 常見問題與解決方法

  • 問題:go build 沒有產生執行檔
    解決方法:請確認程式中有 main 函式,並且當前目錄有對應的 .go 檔案。

  • 問題:編譯時出現錯誤提示 undefined: fmt.Println
    解決方法:確認是否正確導入了 fmt 套件,並且語法沒有錯誤。

  • 問題:執行可執行檔時顯示「permission denied」
    解決方法:確認檔案的執行權限,並使用以下指令來賦予執行權限(Linux/macOS):

    1
    chmod +x hello

🎯總結

Go 語言的編譯與執行過程非常簡單高效,無論是使用 go build 來產生可執行檔,還是使用 go run 來直接執行程式,都能快速測試和調試程式碼。此外,Go 提供了強大的跨平台編譯功能,使開發者能夠在不同平台間進行開發和部署,極大地提高了開發效率。

希望這篇文章能幫助更好地理解如何編譯並執行 Go 程式,並順利開始 Go 開發!

最後建議回顧一下 Go | 菜鳥教學 目錄,了解其章節內容。


註:以上參考了
Go