iT邦幫忙

2026 iThome 鐵人賽

DAY 3
0

在 Go 1.13 之後,官方提供了套件管理功能 Go Module,同時也寫了一篇指南 Tutorial: Create a Go module

我們可以用 go mod init olivine 在專案根目錄下初始化,它會自動生成 go.mod 檔案。

註:許多的專案會使用 github.com/{username}/{repo_name} 這樣格式的 module 名稱,這可以讓其它開發者很快知道它來自於哪個 GitHub 儲存庫,對於函式庫類型的專案相當合適。

main 函式

main 函式被視為程式的進入點,這個邏輯與 C/C++ 或 Java 相當類似。

file: ./cmd/olivine/main.go
package main

import "fmt"

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

可以使用 go run ./cmd/olivine,你應該可以看到 console 中出現 Hello World

$ go run ./cmd/olivine
Hello World

提示:main 函式可以被放在任何 go module 底下的資料夾下,只要確保命名為 package main 即可;我個人習慣於把執行檔的原始碼放在 ./cmd/{binary_name} 底下,這個思想源於 golang-standard/project-layout,雖然這並非 Go 官方的標準,但對於中大型專案而言是很好的組織方式。

Makefile

make 是一個軟體開發中常用的傳統建置工具,藉由 Makefile 定義一些指令,幫助開發者設定、編譯或清理專案。

就從一個簡單的 Makefile 開始:

# file: ./Makefile
BIN_DIR := bin
CMD_DIR := cmd

build:
	@echo "Building binaries..."
	@mkdir -p $(BIN_DIR)
	go build -o $(BIN_DIR)/olivine ./$(CMD_DIR)/olivine

clean:
	@echo "Cleaning..."
	@rm -rf $(BIN_DIR)

在這個 Makefile 中,定義了兩個指令 buildclean

  • build:將 ./cmd/olivine 的原始碼編譯成執行檔並放到 ./bin 底下,如果資料夾不存在會自動建立
  • clean:將 ./bin 刪除

現在,可以使用 make build 來編譯:

$ make build
$ ./bin/olivine
Hello World

上一篇
[Day 02] Redis 簡介
下一篇
[Day 04] TCP Server
系列文
從零開始打造 Redis:以 Go 建立 Production Ready 應用程式5
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言