คำถามที่น่าสนใจเกี่ยวกับ 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 เขาเตรียมมาให้เยอะและครบเครื่องจริง ๆ นะ