Like Share Discussion Bookmark Smile

J.J. Huang   2025-06-27   Getting Started Golang 07.套件   瀏覽次數:次   DMCA.com Protection Status

Go | 系統套件的函式與介紹

💬 簡介

在開發過程中,經常會需要對檔案、目錄、環境變數或系統參數進行操作,而 Go 的 os 套件正是處理這類需求的核心工具。

本篇文章將介紹 os 套件的常用功能,包括檔案與目錄操作、環境變數管理、程序資訊讀取等,協助你掌握與作業系統互動的關鍵技巧。

圖片來源:Gophers


📁 建立與操作檔案

  • 📦 建立新檔案

    1
    2
    3
    4
    5
    6
    7
    file, err := os.Create("example.txt")
    if err != nil {
    log.Fatal(err)
    }
    defer file.Close()

    file.WriteString("Hello, Go!\n")

  • 📝 開啟並寫入現有檔案

    1
    2
    3
    4
    5
    6
    7
    file, err := os.OpenFile("example.txt", os.O_APPEND|os.O_WRONLY, 0644)
    if err != nil {
    log.Fatal(err)
    }
    defer file.Close()

    file.WriteString("追加內容\n")

  • ❌ 刪除檔案

    1
    2
    3
    4
    err := os.Remove("example.txt")
    if err != nil {
    log.Fatal(err)
    }

📂 目錄操作

  • 📁 建立目錄

    1
    2
    3
    4
    err := os.Mkdir("mydir", 0755)
    if err != nil {
    log.Fatal(err)
    }
  • 📁 建立多層目錄

    1
    2
    3
    4
    err := os.MkdirAll("mydir/subdir/nested", 0755)
    if err != nil {
    log.Fatal(err)
    }

  • ❌ 刪除目錄

    1
    2
    3
    4
    err := os.RemoveAll("mydir")
    if err != nil {
    log.Fatal(err)
    }

🌍 環境變數操作

  • 🔍 取得環境變數

    1
    2
    home := os.Getenv("HOME")
    fmt.Println("使用者目錄:", home)

  • ➕ 設定環境變數

    1
    2
    3
    4
    err := os.Setenv("MY_ENV", "production")
    if err != nil {
    log.Fatal(err)
    }

  • 🗒️ 列出所有環境變數

    1
    2
    3
    for _, env := range os.Environ() {
    fmt.Println(env)
    }

⚙️ 取得系統資訊

  • 📍 取得目前工作目錄

    1
    2
    3
    4
    5
    wd, err := os.Getwd()
    if err != nil {
    log.Fatal(err)
    }
    fmt.Println("目前目錄:", wd)

  • 📎 取得執行檔路徑

    1
    2
    3
    4
    5
    exe, err := os.Executable()
    if err != nil {
    log.Fatal(err)
    }
    fmt.Println("執行檔路徑:", exe)

  • 🧍 取得使用者與群組資訊(作業系統相關)

    1
    2
    3
    fmt.Println("UID:", os.Getuid())
    fmt.Println("GID:", os.Getgid())
    fmt.Println("PID:", os.Getpid())

📌 實務應用場景

  • ✅ 開啟、寫入與刪除檔案日誌
  • ✅ 自動建立目錄結構
  • ✅ 根據環境變數切換開發與正式環境
  • ✅ 在 CLI 應用中獲取當前工作目錄與執行位置
  • ✅ 跨平台操作檔案與系統環境

✨ 延伸技巧與補充

  • os.Open() 只能開啟現有檔案且為唯讀
  • 若需完整讀寫控制,請使用 os.OpenFile() 配合標誌如 os.O_CREATE, os.O_TRUNC
  • 權限(如 0755, 0644)使用類 Unix 權限值表示
  • 搭配 iobufio 套件能進行進階的檔案處理(如逐行讀取)

🎯 總結

os 套件提供了與系統互動的基礎能力,支援檔案與目錄操作、環境變數存取與系統資訊查詢:

  • ✅ 建立、開啟、寫入與刪除檔案
  • ✅ 管理目錄結構
  • ✅ 存取環境變數與執行環境資訊

這是撰寫 CLI 工具、後端系統應用與部署腳本時不可或缺的工具之一。

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


註:以上參考了
Go