เนื่องด้วยปลายปีต้องไปแนะนำการพัฒนาระบบงานด้วยภาษา 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

Tags:,