คำถามที่น่าสนใจเกี่ยวกับ go command ของภาษา Go คือ
มีอะไรให้ใช้บ้าง ?

คำตอบคือ มีเยอะมาก ๆ ใช้ไม่น่าหมด
แต่มาดูสิ่งที่น่าจะเป็นประโยชน์ และใช้งานบ่อย ๆ กันดีกว่า

เริ่มจากคำสั่งทั่วไป ใช้บ่อย ๆ

$go env สำหรับการดู  environment variable ต่าง ๆ ของ Go
เราสามารถดูเป็นตัว ๆ ได้ เช่น $go env GOPATH GOARCH

ถ้าอยากรู้ว่าใช้อย่างไรก็ใช้ $go help env จากนั้นก็อ่านให้เข้าใจ และทำตาม
สายอ่าน document ก็ต้อง $go doc นะสิ พลาดไม่ได้

กลุ่มที่สองคือ ใช้ในการพัฒนา

มีให้เยอะมาก ๆ เรียงลำดับดังนี้

  • สร้าง project ด้วย $go mod init ตามด้วยชื่อ module
  • ส่วน $go get สำหรับ download dependency ต่าง ๆ ที่ต้องใช้งาน คงไม่ค่อยได้ใช้แล้ว ถ้ามช้ Go module
  • ทำการ clear cache ต่าง ๆ ที่ผ่าน Go module ด้วย $go clean -modcache
  • ทำการจัดการ format ของ code ด้วย $go fmt ในการทำงานจริงเอาไปใส่ใน git hook  ก่อนการ commit ไว้เลยนะ ง่ายสุด ๆ
  • เรื่องของการตรวจสอบรูปแบบ  หรือ style การเขียนก็ใช้ $golint ไป
  • ตรวจสอบ static code analysis ด้วย $go vet
  • พวก dependency ที่ไม่ใช้งานก็ $go mod tidy ไปด้วย มันเปลือง อ้อ เพื่อความมั่นใจก็ $go mod verify สำหรับคนที่ใช้  Go module นะ ใครบ้างละที่ไม่ใช้ ใช้หมดนั่นแหละ
  • จากนั้นก็ลอง run ด้วย $go run
  • แต่ถ้างานจริง ๆ เราก็ต้อง build ออกมาเป็น binary file ตามแต่ละ OS สิ ด้วย $go build
  • ถ้าใครไม่รู้ว่า Go สนับสนุน  OS และ Architecture อะไรบ้าง ให้ใช้ $go tool dist list

กลุ่มที่สาม ใช้ในการทดสอบ

เขียนภาษา Go แล้ว ไม่เขียน test นี่บาปมาก ๆ ว่าป่ะ !!

เริ่มด้วย $go test ./.. นั่นเอง
หรือเพิ่ม flag เกี่ยวกับ rece condition detector หน่อย $go test -race

เนื่องจาก $go test นั้นจะทำการสร้าง  cached file ขึ้นมา
เพื่อปรับปรุงความเร็วของการทดสอบ
ดังนั้นถ้าต้องการ clear cache เหล่านี้ก็ใช้คำสั่ง $go clean -testcache

ถ้าทดสอบแล้วเกิดไม่ผ่าน อยากให้หยุดการทดสอบ ก็ใช้ failfast คือ $go test -failfast

อยากดู code/test coverage ก็ $go test -cover
แน่นอนว่า code coverage สามารถนำมาสร้าง report ไฟล์ html ได้
ด้วย $go tool cover

ยังมีอีกกลุ่ม แต่จะลึกหน่อยคือ พวก profiling tool ต่าง ๆ 

เช่น 

  • pprof ใช้งานผ่าน $go tool pprof
  • Trace ใช้งานผ่าย $go tool trace

เท่าที่เคยใช้ก็มีเท่านี้แหละครับ สำหรับมือใหม่

แต่ตามจริงมันมีอีกเยอะนะ
ลองไปใช้ดูกัน $go help
โดยที่ภาษา Go เขาเตรียมมาให้เยอะและครบเครื่องจริง ๆ นะ

Tags:,