พอดีได้มีโอกาสไปแบ่งปันความรู้เรื่อง
การเริ่มต้นพัฒนาระบบงานด้วยภาษา Go
ให้กับน้อง ๆ ที่เข้ามาฝึกฝนในค่าย The SCK SEAL Team นิดหน่อย
ซึ่งใช้เวลาในการแนะนำและแบ่งปันไปประมาณ 1-2 ชั่วโมง
ประกอบไปเรื่องพื้นฐานดังนี้
1. ว่าด้วยเรื่องของ go env
เป้าหมายเพื่อให้เข้าใจเกี่ยวกับ environment ต่าง ๆ ของภาษา Go ทั้ง GOROOT, GOPATH, GOOS และ GOARCH เพื่อให้นำไปใช้ได้อย่างถูกต้อง ไม่งง ยกตัวอย่างเช่น- GOROOT สำหรับกำหนด path ของ Go compiler ง่าย ๆ คือ บ้านของ Go
- GOPATH สำหรับกำหนด path ของ project หรือระบบงานของเรานั่นเอง
2. มาลองทำความเข้าใจกับ GOPATH เพิ่มขึ้น
ด้วยการลองใช้ go get เพื่อ download library ต่าง ๆ มาใช้งาน คำถามคือ go get ทำอะไรบ้าง ? เป็นสิ่งที่คนใช้งานจำเป็นจะต้องรู้ ลองไปตามดูนะครับ ผลที่เกิดขึ้นคือ- ทำการ download library ไปยัง GOPATH/src
- ทำการ compile/install library ไปยัง GOPATH/pkg
3. เมื่อเข้าใจก็มาถึง project structure
ก็ควรมีโครงสร้างง่าย ๆ คือ GOPATH/src นั่นเอง ส่วน folder pkg และ bin ก็เอาไว้เก็บผลลัพธ์ต่าง ๆ คือ- pkg เอาไว้เก็บผลจากการ install library จาก package ต่าง ๆ
- bin เอาไว้เก็บ binary จากการ build ระบบงาน
- controller
- service
- repository
แต่พยายามไม่ให้มีการเรียกข้าม package เพื่อลดความซับซ้อนของระบบงาน
4. ชุดคำสั่งที่ต้องใช้งานกันเลย
สิ่งที่ทีมควรสรุปร่วมกันคือ workflow การทำงานนั่นเอง ว่าจะเป็นอย่างไร ซึ่งทุก ๆ คนควรทำงานเหมือนกัน ทั้งการเขียน code ทั้งการเขียน test ทั้งการ build -> test -> run ยกตัวอย่างเช่น ชุดคำสั่งต่าง ๆ ควรใช้เหมือนกัน หรืออาจจะสรุปออกมาเป็น shell script ไว้เลย โดยชุดคำสั่งที่ควรต้องมี เช่น- go fmt สำหรับจัด format ของ code
- go test สำหรับการทดสอบ
- go tool cover สำหรับการสร้างรายงานของ code coverage
- go install สำหรับการ compile library/package ต่าง ๆ ซึ่งไปเก็บไว้ใน folder pkg
- go build สำหรับการสร้าง binary ซึ่งให้กำหนดไปไว้ที่ folder bin