Skip to main content

การจัดการ Module

Go module คืออะไร ?

Go module คือ collection ของ go package ที่เกี่ยวข้องที่เราจะนำมาใช้งานร่วมกันกับใน project

  • ในการจัดการ package (หรือ Dependency) ที่นำเข้ามาใช้งาน เพื่อให้ง่ายต่อการจัดการ = จำเป็นต้องมี Go module เป็นตัวจัดการ dependency ที่ import เข้ามา
  • ถ้าใครที่เคยเขียน Node.js มาจะเหมือนกับการมี node_module และ package.json ในการจัดการ package
  • Go module นั้น ถูกนำมาใช้ตั้งแต่ Go version 1.11 เป็นต้นไป

โดยการจัดการ module นั้น เราจะมี 2 files ที่เป็น file หลักคือ

  1. go.mod list dependency ทั้งหมดของ go ไว้
  2. go.sum คือไฟล์ที่เก็บเวอร์ชั่นที่ลงเอาไว้ (ใข้เช็คได้ว่าเรา load มาถูก version แล้วหรือไม่)

หน้ารวม library สามารถเข้าไปดูได้ที่ https://pkg.go.dev/

ตัวอย่างการใช้ Go module

  1. เริ่มต้นทำการ init Go module ขึ้นมา
go mod init github.com/mikelopster/go-example

หลังจากนั้น เราจะได้ไฟล์ go.mod ออกมามีหน้าตาประมาณนี้

module github.com/mikelopster/go-example

go 1.20
  1. เราจะลองลงเป็น package

ลง package ด้วยคำสั่ง go get

go get github.com/google/uuid

หลังจากลงเสร็จจะมีอีกไฟล์โผล่มาคือ go.sum เป็นการบอก version ที่มีการลงใน project ไว้

และที่ go.mod จะมี library ของ uuid เพิ่มเข้ามา

module github.com/mikelopster/go-example

go 1.20

require github.com/google/uuid v1.4.0 // indirect
  1. ที่ main.go ลองเรียกใช้ library ผ่าน import เข้ามา
package main

import (
"fmt"
"github.com/google/uuid" // เพิ่มการเีรยกใช้ library
)

func main() {
id := uuid.New()
fmt.Printf("Generated UUID: %s\n", id)
}

ก็จะได้ผลลัพธ์จากการใช้ library ออกมา go-module-01

นี่คือตัวอย่างของการใช้ Go module และ stucture project ก็จะเป็นตามนี้

├── go.mod --> package.json
├── go.sum --> checksum library version
└── main.go --> file project

สามารถใช้ go list -m all ในการตรวจสอบ library ว่ามีอะไรอยู่บ้าง

go-module-02