ต้องบอกก่อนเลยนะครับว่า post นี้มัน Basic มากๆเพราะผมเพิ่งศึกษา Go ได้แค่ประมาณ 3-4 HR (อย่างจริงจังนะ 5555+) ดังนั้นถ้าอะไรผิดหรือผมเข้าใจผิดผมรบกวนขอเป็นคำแนะนำ หรือชี้แนะเพื่อที่ผมจะได้ทำการปรับปรุงต่อไปครับ ขอบคุณครับ ^^
เข้าเรื่องดีกว่า ...
ต้องบอกว่าบทความนี้เกิดจากการไม่เข้าใจของตัวเองว่าอะไรคือ go module
แล้วมันทำงานยังไง หรือเราจำเป็นต้องมีการกำหนด GOPATH หรือยังไง ซี่งประเด็นดังกล่าว เท่าที่ผมเข้าใจนะครับ คือไม่ต้องกำหนด GOPATH แล้วก็ได้ เพราะเราจะใช้ไอ้เจ้า Go Modules
มาจัดการเรื่องพวกนี้เอง
Modules are supported from Go version 1.11
OK.. จบไปเรื่องนึง
หลังจากนั้นผมก็เริ่มทำการสร้าง project go แบบเด็กๆ
D:\GO> mkdir updev
D:\GO> cd updev
D:\GO\updev> go mod init puza.com/updev
go mod init puza.com/updev มันคืออะไร ? จากที่ได้ลองทำความใจเอาเอง 5555+
โดยถ้าเราทำการ run command go mod init puza.com/updev
เราก็จะได้ go.mod
ซึ่งจะทำการเก็บไว้ใน Root directory
จากที่อ่านจาก Internet
A module is a collection of packages that are released, versioned, and distributed together. Modules may be downloaded directly from version control repositories or from module proxy servers. ref
ผมจะขอสรุปแบบบ้านๆ โดยจะเริ่มจาก
Packages คือ Source Code ของภาษา Go ที่อยู่ใน Directory
Module คือ Collection ของ Package ที่มีการทำงานด้วยวัตถุประสงค์เดียวกัน นั้นเอง 5555555+
A module is a collection of related Go packages that are versioned together as a single unit.
โดย Module ที่เราสร้างขึ้นนั้นจะสามารถทำการ Import module อื่นๆเข้ามาใช้งานในตัวเองได้ โดยผ่าน Keyword import โดยเราจะสามารถ import ได้ทั้งที่เป็น package และ modules ซึ่งจะประกอบไปด้วย
- Standard package ของ GO เช่น fmt,errors,log เป็นต้น
- Import modules จาก public module ที่มีการพัฒนาขึ้นและเราสามารถนำมาใช้งานได้เลย รวมถึง module ที่เราได้ทำการพัฒนาขึ้นเองด้วย
- Import modules ที่เราได้ทำการพัฒนาขึ้นเอง แต่ยังไม่ได้ทำการ public ขึ้น GITHUB หรือ repository อื่นๆ
หลังจากที่เรา run command go mod init puza.com/updev
[filename : mod.go]
module puza.com/updev
go 1.16
ทำการสร้างไฟล์ app.go
[filename : app.go]
package main
import (
"fmt"
)
func main() {
fmt.Println("Hi!!")
}
ในไฟล์ app.go
จะมีการระบุ package main
ซึ่งจะเป็นการบอกว่าถ้าเรามีการ run go run app.go
ให้มาทำงานที่ file นี้
D:\GO\updev> go run app.go
Hi!!
ได้และ program แรก 555555+
นอกจากนี้ถ้าเรา run go build
go จะทำการ build file .exe แล้วเมื่อเราทดสอบเรียก
D:\GO\updev> go run .\updev.go
Hi!!
ถูกใจสุด 55555555555555555 ลาก่อน mvn clean compile install package
และสิ่งที่น่าสนใจอีกอย่างก็คือ การ import "fmt" ซึ่งเป็น standard package ของ go เข้ามาใช้งานนั้นเอง
Top comments (1)
Good krub