ข้ามไปยังเนื้อหา

ตั้งค่า Go

การตั้งค่า TypeScript ต้องใช้ Node.js, npm (หรือ package manager อื่น) และ tsc ส่วน Go มี toolchain เดียวแบบรวมศูนย์ — ติดตั้ง Go ครั้งเดียวได้ครบทุกอย่าง: compiler, formatter, test runner และ module manager

ดาวน์โหลด official installer จาก go.dev/dl หลังติดตั้ง ตรวจสอบด้วย:

Terminal window
go version
# go version go1.22.0 darwin/arm64

โดยค่าเริ่มต้น Go จะติดตั้งที่ /usr/local/go ส่วน GOPATH (workspace directory, ค่าเริ่มต้นคือ ~/go) คือที่เก็บ module ที่ดาวน์โหลดมาและ binary ที่ติดตั้งไว้ ในทางปฏิบัติคุณแทบไม่ต้องไปยุ่งกับ GOPATH เลย — go mod จัดการให้หมด

นักพัฒนา Node.js ทุกคนรู้จัก node, npm และ tsc ส่วน Go รวมทุกอย่างนี้ไว้ใน go command เดียว

TypeScript
# TypeScript / Node.js toolchain
node index.js # รัน file
npx ts-node src/index.ts # รัน TypeScript โดยตรง
tsc # คอมไพล์ TypeScript
npm install # ติดตั้ง dependency
npm run build # รัน build script
npx <tool> # รัน package binary
Go
# Go toolchain (ทั้งหมดใน command เดียว)
go run main.go # คอมไพล์ + รันใน step เดียว
go run . # รัน package ปัจจุบัน
go build -o myapp . # คอมไพล์เป็น binary
go mod init github.com/you/myapp # init module ใหม่
go get github.com/gin-gonic/gin # เพิ่ม dependency
go install tool@latest # ติดตั้ง CLI tool แบบ global

go run คือ development loop ของคุณ — คอมไพล์แล้วรันในขั้นตอนเดียว เหมือน ts-node หรือ npx tsx ที่ใช้ตอน develop ส่วน go build สร้าง binary แบบ standalone ที่เอาไป deploy ได้ Go ไม่มี “watch mode” ในตัว แต่เครื่องมืออย่าง air ช่วยทำ live reload ได้

TypeScript
# TypeScript development loop
npx ts-node src/index.ts # คอมไพล์ + รัน (dev)
tsc && node dist/index.js # คอมไพล์แล้วรัน (CI/prod)
npx tsx watch src/index.ts # watch mode
Go
# Go development loop
go run . # คอมไพล์ + รัน (dev)
go build -o ./bin/app . && ./bin/app # คอมไพล์แล้วรัน
# air # watch mode (third-party)

เมื่อเริ่มโปรเจกต์ Go ใหม่ ให้ initialize module ด้วย go mod init คำสั่งนี้จะสร้างไฟล์ go.mod — เทียบเท่ากับ package.json ของ Go

TypeScript
# TypeScript
npm init -y
# สร้าง package.json พร้อม name, version, deps
# แล้วเพิ่ม dependency:
npm install express
# อัพเดท package.json + สร้าง package-lock.json
Go
# Go
go mod init github.com/yourname/myapp
# สร้าง go.mod
# แล้วเพิ่ม dependency:
go get github.com/gin-gonic/gin
# อัพเดท go.mod + สร้าง go.sum (เหมือน package-lock.json)

npm install -g ใช้ติดตั้ง CLI tool แบบ global ส่วน go install ก็ทำแบบเดียวกัน — คอมไพล์ module แล้ววาง binary ไว้ใน $GOPATH/bin (อย่าลืมเพิ่ม path นี้ใน PATH ของคุณ)

TypeScript
# TypeScript: CLI tools แบบ global
npm install -g typescript
npm install -g prettier
npx create-react-app myapp
Go
# Go: CLI tools แบบ global
go install golang.org/x/tools/gopls@latest # LSP server
go install github.com/air-verse/air@latest # live reload
go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest

บทนี้เป็นบท setup — playground จึงไม่ค่อยมีบทบาทตรงนี้ (ไม่มีอะไรต้องติดตั้งใน browser) แต่ในบทถัดไป (Hello World) คุณจะได้ใช้ playground รันโปรแกรม Go แรกแบบเต็มๆ

Go เทียบเท่ากับ `ts-node src/index.ts` คืออะไร?
`go mod init` สร้างไฟล์อะไร?
`go install` วาง compiled binary ไว้ที่ไหน?
go.sum เทียบเท่ากับอะไรใน Node.js ecosystem?