การจัดการ 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 หลักคือ
go.mod
list dependency ทั้งหมดของ go ไว้go.sum
คือไฟล์ที่เก็บเวอร์ชั่นที่ลงเอาไว้ (ใข้เช็คได้ว่าเรา load มาถูก version แล้วหรือไม่)
หน้ารวม library สามารถเข้าไปดูได้ที่ https://pkg.go.dev/
ตัวอย่างการใช้ Go module
- เริ่มต้นทำการ init Go module ขึ้นมา
go mod init github.com/mikelopster/go-example
หลังจากนั้น เราจะได้ไฟล์ go.mod
ออกมามีหน้าตาประมาณนี้
module github.com/mikelopster/go-example
go 1.20
- เราจะลองลงเป็น package
- package ตัวอย่างที่เราจะลองเล่นคือ uuid สำหรับการ generate uuid มา https://pkg.go.dev/github.com/google/uuid
ลง 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
- ที่
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 และ stucture project ก็จะเป็นตามนี้
├── go.mod --> package.json
├── go.sum --> checksum library version
└── main.go --> file project
สามารถใช้ go list -m all
ในการตรวจสอบ library ว่ามีอะไรอยู่บ้าง