เนื่องด้วยปลายปีต้องไปแนะนำการพัฒนาระบบงานด้วยภาษา Go นิดหน่อย
สิ่งหนึ่งที่โดนถามตลอดคือ
สำหรับผู้เริ่มต้นต้องเรียนรู้อะไรบ้าง
มีอะไรที่น่าสนใจบ้าง
จึงทำการสรุปไว้นิดหน่อย
ซึ่งเป็นแนวทางในการพัฒนาตลอดปี 2023 ที่ผ่านมา (ในมุมมองคนเริ่มต้นเช่นเดียวกัน)
มาเริ่มกันเลย
- เริ่มต้นโดยไปที่ go.dev นะครับ มีทุกอย่างที่นี่ ตั้งแต่การติดตั้ง และ เอกสารต่าง ๆ
- แนะนำการเรียนรู้เลยที่ go.dev/learn
- IDE หลัก ๆ ที่ผมใช้คือ VS Code และ Go extension
ส่วน go command line tools ที่ใช้ตลอด ประกอบไปด้วย
- go mod init สำหรับการสร้าง module ซึ่งเป็นค่า default ของ go project ไปแล้ว
- go mod tidy สำหรับ download และ prune พวก library/dependency ที่ใช้งานใน project
- gp work สำหรับการสร้าง workspace สำหรับ multi-module อันนี้สะดวกสบายมากขึ้น
- go fmt สำหรับการจัดการ format ของ code ใน project
- go lint cli สำหรับช่วยทำ static code analysis
- go build สำหรับการสร้าง single binary ของระบบงาน
- go test สำหรับทดสอบระบบงาน
- ทำการ scan code เพิ่อหาพวก secret ในระบบ ใช้งาน git Leak
- ทำ profiling อย่าลืม pprof นะครับ ของดี
- ถ้าไม่ใช้งานกับ Docker น่าจะยังประบได้อีกนะ
- สำหรับเริ่มมือในแปลง JSON ใน Struct นั้นใช้งาน json-to-go หรือ Paste JSON as Code ได้เลย
เพิ่มเติมสำหรับการ build single binary ตามแต่ละ OS และ CPU
ทำการ config environment variables ชื่อว่า GOOS และ GOARCH ดังตัวอย่าง
- GOOS=darwin GOARCH=amd64
- GOOS=windows GOARCH=arm64
ทำการ trim การ build ด้วยคำสั่ง
- go build -ldflags="-s -w"
หรือถ้าง่าย ๆ แนะนำให้ใช้งาน Go Releaser
ในส่วนของ library/package ที่น่าสนใจ
- testing ก็ต้อง testify
- web framework จะมี go gin, echo เป็นต้น
- logging ปกติจะมี zap, zerolog และ logrus แต่ตอนนี้ใน go มี standard library ชื่อว่า log/slog ออกมา ทำให้ง่ายไปอีก
- และอื่น ๆ อีกมากมายตาม requirement ของระบบ แนะนำดูที Awesome Go
ส่วนเรื่องความรู้ของภาษา Go ก็ต้องทำความเข้าใจ
หลัก ๆ ผ่าน go.dev/learn นั่นเอง เช่น Go Tour และ Effective go
จากนั้นเรื่องที่ต้องทำความเข้าใจก่อน สำหรับผมประกอบไปด้วย
- เรื่องของ go tool ตั้งแต่การพัฒนา ทดสอบ จนถึงการ deploy เขียนแค่ hello world ก็ได้
- syntax ก็ช่วยให้เราไปได้เร็วขึ้น ตัวภาษาอาจจะแปลก ๆ หน่อย เลยต้องทำความเข้าใจ ลงมือทำเยอะ ๆ
- ไปเรียนรู้ทั้งหมดไม่ได้ แนะนำให้หาปัญหา หรืองานที่จะทำ จากนั้นเรียนรู้ภาษาตามการแก้ไข จะทำให้สนุกมากยิ่งขึ้น
- สิ่งที่ต้องเข้าใจ หลัก ๆ ที่ของแนะนำเช่น struct, interface และ error handling จากนั้นไปดูที่โครงสร้างการทำงานของระบบงาน
- ภาษา go มีแนวทาง และ แนวคิดของตัวเอง จำเป็นต้องเรียนรู้และเข้าใจด้วย จะช่วยให้เราพัฒนาตัวเองขึ้นไปอีกทาง
- แนะนำให้ stay update go อยู่อย่างสม่ำเสมอ อย่ามีข้ออ้าง !!
- ChatGPT และ Chat Copilot เป็นเพื่อคู่คิด ขาดไม่ได้เลย แนะนำให้ลองนำมาใช้งานดูครับ
จงเรียนรู้อย่างต่อเนื่อง
ของให้สนุกกับการ coding ครับ
ตอนที่เขียน blog นี้ใช้งาน go 1.21.5