DEV Community

ksupdev
ksupdev

Posted on

Go-1 เรื่องง่าย style GO ที่ผมเพิ่งรู้ #module and import

#go

ต้องบอกก่อนเลยนะครับว่า 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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

ทำการสร้างไฟล์ app.go

[filename : app.go]
package main

import (
    "fmt"
)

func main()  {
     fmt.Println("Hi!!")

}
Enter fullscreen mode Exit fullscreen mode

ในไฟล์ app.go จะมีการระบุ package main ซึ่งจะเป็นการบอกว่าถ้าเรามีการ run go run app.go ให้มาทำงานที่ file นี้

D:\GO\updev> go run app.go
Hi!!
Enter fullscreen mode Exit fullscreen mode

ได้และ program แรก 555555+

นอกจากนี้ถ้าเรา run go build go จะทำการ build file .exe แล้วเมื่อเราทดสอบเรียก

D:\GO\updev> go run .\updev.go
Hi!!
Enter fullscreen mode Exit fullscreen mode

ถูกใจสุด 55555555555555555 ลาก่อน mvn clean compile install package

และสิ่งที่น่าสนใจอีกอย่างก็คือ การ import "fmt" ซึ่งเป็น standard package ของ go เข้ามาใช้งานนั้นเอง

Top comments (1)

Collapse
 
kthanapuet profile image
Thanapuet Kaewmanee

Good​ krub