เนื่องจากอยากลองใช้งาน vgo
ทำหน้าที่จัดการ dependency หรือ library ต่าง ๆ
เห็นบอกว่าเป็น feature ที่จะเพิ่มเข้ามาใน Go 1.11
ดังนั้นจึงไปลองเล่น feature นี้กันหน่อยว่าเป็นอย่างไร
ว่าแล้วก็เริ่มกันเลย

ขั้นตอนที่ 1 ทำการติดตั้งก่อน

สิ่งที่ทำคือ ไป clone source code จาก repository ของ Go
จากนั้นทำการ build จาก branch master
ซึ่ง vgo นั้นได้ถูกเพิ่มเข้ามาให้แล้วดังนี้

$git clone https://go.googlesource.com/go
$cd go
$cd src
$./make.bash

สวัสดี Go

$go version

go version devel +5f5402b723 Tue Jul 24 23:54:08 2018 +0000 darwin/amd64

ขั้นตอนที่ 2 มาลองใช้งาน vgo กัน

Code ตัวอย่างเป็นการพัฒนา RESTful API ด้วย Gin

ทำการ run program ของเรา
ลองไปลบ dependency ต่าง ๆ ของ Gin ออกจาก GOPATH ก่อนนะ เพื่อให้เห็นการทำงานของ vgo
มา run กัน

$go run api.go      
  
go: cannot determine module path for source directory /my-code (outside GOPATH, no import comments)

เกิด error ขึ้นมา มีคำว่า module ด้วยนะ
นั่นคือ project อยู่นอก $GOPATH และ module ไม่เจอ
ซึ่งเราจำเป็นต้องสร้างไฟล์ go.mod ขึ้นมาเพื่อกำหนด root ของ module ดังนี้

จากนั้นทำการ run อีกครั้ง ได้ผลดังนี้

$go run api.go    

go: finding github.com/gin-gonic/gin v1.1.4
go: downloading github.com/gin-gonic/gin v1.1.4
go: finding github.com/manucorporat/sse latest
go: finding github.com/mattn/go-isatty v0.0.3
go: finding github.com/golang/protobuf/proto latest
go: finding golang.org/x/net/context latest
go: finding gopkg.in/yaml.v2 v2.2.1
go: finding gopkg.in/go-playground/validator.v8 v8.18.2
go: downloading github.com/mattn/go-isatty v0.0.3
go: downloading github.com/manucorporat/sse v0.0.0-20160126180136-ee05b128a739
go: finding golang.org/x/net latest
go: downloading golang.org/x/net v0.0.0-20180724234803-3673e40ba225
go: downloading gopkg.in/yaml.v2 v2.2.1
go: downloading gopkg.in/go-playground/validator.v8 v8.18.2
go: finding github.com/golang/protobuf v1.1.0
go: downloading github.com/golang/protobuf v1.1.0
go: finding gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405

ไฟล์ go.mod นั่นคือ Go Module นะ
เพื่อกำหนดให้เป็น module หลัก และจะทำการเก็บ dependency ต่าง ๆ ที่ใช้
หลังจากที่ run แล้วจะการตรวจสอบ, download และเก็บ depenedncy ที่ใช้งานไว้ดังนี้

รวมทั้งยังสร้างไฟล์ go.sum เพื่อเก็บค่า checksum ของ dependency แต่ละตัวอีกด้วย

ส่วน dependency นั้นจะถูก download ไว้ใน $GOPATH/mod นะ เปลี่ยนไปแล้วว

เพียงเท่านี้ก็ใช้งานได้แล้วนะ
ไปลองกัน

ขอให้สนุกกับการ coding ครับ

Tags: