Go ด้วยกัน Go ได้ไกล-Introduction [EP.1]

Grassroot Engineer
3 min readJul 29, 2024

--

https://www.softwebsolutions.com/resources/golang-web-development.html

สำหรับ EP แรกนี้มาเตรียม Environment กันก่อนดีกว่าคับ

  1. Golang
    brew install go จากนั้นตรวจสอบด้วย go version
  2. NodeJS
    หรือ จะใช้ NVM ก็สะดวกมากๆ
  3. PostgreSQL
    ตาม Link หรือจะใช้ Postgres from Docker ได้หมดคับ
  4. Visual Studio Code ลง Extensions ตามนี้เลยคับ
    - Go: Go Team at Google
    - Color Picker: anseki
    - Material Icon Theme: pkief.com
    - ES7+ React/Redux/React-Native snippets: dsznajder
    - MySQL: Weijan Chen
    - Thunder Client: Thunder Client
    - One Dark Pro: binaryify
  5. Git ที่คุ้นเคย

ภาษา Go จะมีโครงสร้างคล้ายๆ ภาษา C ที่ต้องมีการ Compile program ก่อนฉะนั้นเรื่อง performance จึงเหนือกว่าตระกูล Interpreter มาก หลักๆที่สำคัญคือ
- Simplicity เรียบง่าย, No OOP
- Concurrency รับ request ได้แบบ Async
- Strong Typing + Static Typing
- Garbage Collection (ระบบจัดการ memory หลังบ้าน มีให้นะ),
- Package Management มี lib ให้ใช้ครบครันแล้ว
- Error Handling มีวิธี Handle ที่ชัดเจน
- Tooling มี Go tools มากมาย (gofmt, go test, go build)
- Interfaces ใช้ระบบ interface ทำให้ code reusable แทน classic OOP.
- Immutability (สนับสนุนการใช้ constants ทำให้โปรแกรมปลอดภัยมากขึ้น)
- Community and Ecosystem ตอนนี้พร้อมหมดแล้ว มี docs + examples มากมาย

Uber Go Style Guide สำหรับมาดู Best practice ได้นะ ซึ่งเป็นของ Uber ที่นำ Go มาใช้อย่างจิงๆจัง โดยมี Best practice ทั้ง original และ TH ที่มีคนแปลเอาไว้ด้วย

Uber Go Style Guide (EN)
Uber Go Style Guide (TH)

ในการพัฒนาจะมี 3 steps คือ

  1. Source code (.go)
    สร้างไฟล์ main.go
  2. go build main.go
    เป็นการ compile ด้วย Go Complier
  3. dmg, exe, or any platforms
    จำได้ Binary file นำไปใช้งานได้
  1. Hello word
go run, go build
  • สำหรับ package ต่างๆของ Go ที่เป็น standard lib เราสามารถไปดูได้ https://pkg.go.dev/std
  • จากรูปด้านล่างคือ fmt lib ที่เราไว้ใช้ในคำสั่ง fmt.Println()
https://pkg.go.dev/fmt@go1.22.5

2. Module/Package (การสร้าง Module และ ติดตั้ง Package)

  • Initial Module.
  • Module name can be anything.
go mod init <module name>
go get <package name>

3. How to take lib to use

Take lib to use and declare variables both long and short

4. Remove package

go mod tidy

5. การสร้าง package สำหรับใช้ใน project

  • Function ที่ขึ้นต้นด้วย Capital = public
  • Fuction ที่ขึ้นต้นด้วย Small letter = private
Create package for using in Project

6. Example of Public function with return value.

External function with return value

7. Concept of internal function.

  • ถ้าเราไม่ต้องการให้ access ได้โดยตรง ให้สร้างไฟล์เหล่านั้นไว้ใน internal folder ได้นะ (keyword is internal)
Concept of internal folder
  • ถ้าเราต้องการ access จะต้องทำผ่าน package ภายนอกอีกทีนะ ซึ่งในทีนี้คือต้องทำผ่าน package grassroot นั่นเอง
    (คือต้อง access จาก parent folder ของ internal folder นั่นเอง)
How to access to internal folder

สรุปคำสั่งในภาษา Go เบื้องต้น


go run <file name> // Run app
go build <file name> // Build app
go mod init <module name> // Initial module
go get <package name> // Get external package to install
go list -m all // Check list of packages in project
go mod tidy // Tidy packages ( Remove and Update dependings on the code)

If you think it’s useful for you, just clap your hands 👏 to be encouraged me.

GRASSROOT ENGINEER 😘

แล้วพบกันใหม่ตอนถัดไปคับ

--

--

Grassroot Engineer
Grassroot Engineer

Written by Grassroot Engineer

ATM engineer who is interested in CODING and believe in EFFORT. — https://grassrootengineer.com

No responses yet