หลายๆ คนที่สนใจงานด้าน Web Development หรือสนใจด้าน DevOps ก็คงเคยได้ยินเกี่ยวกับภาษา Golang มาบ้างไม่มากก็น้อย อาจจะเคยได้ยินว่าเป็นหนึ่งในภาษาโปรแกรมมิ่งที่กำลังมาแรง หรือว่าเป็นภาษาที่มี Performance สูง สามารถทำงานได้อย่างรวดเร็ว หรือแม้กระทั่งเป็นภาษาที่พัฒนาโดยบริษัท Google
ซึ่งในบล็อกนี้ เราจะมาเจาะลึกรายละเอียดของภาษา Golang กันว่า Golang คืออะไร? Golang ดียังไง? ทำไม Golang ถึงเป็นภาษาที่นิยมใช้กันทั่วโลก?
งั้นเรามาเริ่มต้นทำความรู้จักกับภาษา Golang กันก่อนดีกว่าครับ
Table of Contents
ภาษา Golang คืออะไร?
ภาษา Golang หรือ ภาษา Go เป็นภาษา Programming แบบ Open-Source ถูกพัฒนาขึ้นโดยบริษัท Google ในปี 2007 และเป็นภาษาที่ได้รับความนิยมมากขึ้นเรื่อย ๆ ในยุคนี้
โดยภาษา Go นั้นจะมีจุดเด่นในเรื่องของ Performance ที่สามารถทำงานได้อย่างรวดเร็วเทียบกับภาษาอื่น ๆ อีกทั้งยังมีจุดเด่นในเรื่องของ Simplicity ที่เน้นความง่ายในการเขียนและการอ่าน และยังสามารถทำ Concurrent Programming ได้ง่าย เพราะภาษา Golang ถูกออกแบบมาเพื่อทำให้ Application ที่ต้องใช้ Multi-Threading หรือ Distributed Systems เป็นเรื่องที่ง่ายขึ้น
ใครใช้ Golang บ้าง?
มีบริษัทชื่อดังทั้งในระดับโลก และระดับประเทศมากมายที่ใช้ Golang ในการพัฒนาระบบและ Application ต่างๆ ไม่ว่าจะเป็น
- Google – ในโปรเจกต์ Kubernetes และ Youtube
- LINE – Chat Application ยอดนิยมในเมืองไทย
- Twitter – Social Media ชื่อดังระดับโลก
- Grab – แพลตฟอร์ม Logistics & Delivery ยอดนิยม
- Agoda – แพลตฟอร์มจองตั๋วเครื่องบิน และโรงแรมยอดนิยม
- Lineman Wongnai – แอปรีวิวร้านอาหาร และ Delivery ชื่อดังในไทย
- Twitch – แพลตฟอร์ม Streaming ชื่อดังระดับโลก
- Alibaba – บริษัท Ecommerce ขนาดยักษ์ในประเทศจีน
- Medium – แพลตฟอร์มชื่อดังสำหรับนักอ่าน Articles และ Blog
- Docker – Tool ชื่อดังยอดนิยมสำหรับทำ Containerization ใน DevOps
Golang ทำอะไรได้บ้าง?
- Web Development & Backend Development
Golang เป็นภาษาที่เหมาะสำหรับการทำ Web Development มาก ๆ เพราะ Golang สามารถใช้สร้างระบบที่รองรับการทำงานใน Scale ใหญ่ที่มี Request จำนวนมากได้ ซึ่ง Golang ถูกออกแบบมาเพื่องานประเภทนี้โดยเฉพาะ ยกตัวอย่างเช่น มี HTTP Package อยู่ใน Standard Library ของ Go เลยโดยที่ไม่ต้องลง Library เพิ่มเติม หรือจะใช้ Framework ต่างๆ ช่วยให้ทำ Web Development ได้ง่ายและสะดวกขึ้น เช่น Gin Gonic, Martini, Buffalo - DevOps Automation
เพราะ Golang เป็นภาษาที่มี Syntax ที่ง่ายและเบา ทำให้เหมาะกับการใช้สร้าง Script ง่ายๆ ในการทำ Tasks ต่าง ๆ ได้ดี โดยเฉพาะ Tasks ในด้านงานของ DevOps เช่นการทำ Task Automation ต่างๆ ใน CI/CD Pipeline เป็นต้น นอกจากนี้ Golang ยังสามารถถูก Compile ได้อย่างรวดเร็ว จึงเหมาะกับงานประเภทนี้มากเช่นกัน - Cloud Computing Systems
นอกจากนี้ Golang ก็ยังสามารถใช้ในการพัฒนา Cloud Computing Systems ที่ Scalable ได้ดีมาก ๆ ด้วย ยกตัวอย่างเช่นโปรเจกต์ชื่อดังที่ไม่มีสาย DevOps คนไหนไม่รู้จัก อย่าง Docker และ Kubernetes ซึ่ง 2 โปรเจกต์นี้นั้นใช้ Golang เป็นภาษาหลักในการพัฒนา หรือแม้กระทั่งบริษัท Cloud Software ชื่อดังอย่าง Dropbox ก็ได้เปลี่ยนระบบหลังบ้านจาก Python มาเขียนใหม่ด้วย Golang แทน - Command Line Interface Tools
Golang ยังสามารถนำมาใช้สร้าง command-line interfaces หรือ CLI ได้ง่ายๆ ยกตัวอย่างเช่น docker-cli ของ Docker และ kubectl ของ Kubernetes ซึ่ง Golang เองก็มี framework ตัวช่วยอำนวยความสะดวกในการสร้าง CLI เช่น ใช้ Cobra ร่วมกับ Viper - Other Applications
Golang เองยังสามารถนำมาใช้สำหรับ Application อื่นๆ ได้อีกมากมาย เช่น การทำ Robot, Drone, IoT (Internet of Things) ด้วย tools อย่าง Gobot
ข้อดี ข้อเสีย ของ Golang
ข้อดีของ Golang
- เป็นภาษาที่สร้างโดย และสนับสนุนโดย Google
- เป็นภาษาที่ทำงานเร็ว เนื่องจากเป็นภาษาที่ใช้การ Compile
- เหมาะสำหรับงานที่ต้องการรองรับ Request เป็นจำนวนมาก
- ออกแบบมาเพื่อให้ทำ Concurrent Programming และ Multithreading ได้ง่าย
- มี Syntax และ Concept ที่เรียบง่าย ทำให้เรียนรู้ได้ไม่ยาก
- มี Standard Library และ Built-In Testing Module ที่ครอบคลุมการใช้งานใน Application ยุคใหม่
- เป็นภาษาที่เป็น Static type ทำให้ป้องกัน Error บางส่วนได้
ข้อเสียของ Golang
- เป็นภาษาที่ค่อนข้างใหม่ เมื่อเทียบกับภาษาอื่นๆ ทำให้อาจจะยังไม่มี Resource มากเมื่อเทียบกับภาษาอื่นๆ
- ไม่มี Feature ที่นิยมอย่างเช่น Generics หรือ Function Overloading ซึ่งอาจทำให้ต้องมีการเขียนโค้ดที่ซ้ำซ้อน แต่ประเด็นนี้ก็เป็นที่ถกเถียงกันในหมู่คนใช้ภาษา Go เช่นกันเพราะว่าการไม่มี Feature นี้นั้น ทำให้ภาษา Golang มีความ Simple ไม่ซับซ้อน
ตัวอย่างการเขียนโค้ดภาษา Golang
ตัวอย่างคลาสสิคอย่าง Hello World
Golang จะมี Syntax ของภาษาที่ชาว Developer ส่วนใหญ่คุ้นเคยกัน ซึ่งสังเกตว่าจะมี Function Main ที่คล้ายการเขียนโค้ดภาษา C และ Java
package main
import "fmt"
func main() {
fmt.Println("hello world")
}
ตัวอย่างการเขียน Simple Web Server ด้วย Standard Go Library
สังเกตว่า HTTP จะเป็น Standard Package ของ Golang ที่สามารถใช้ได้เลยโดยไม่ต้องลง Library เพิ่ม และมีการใช้ Function fmt.Fprintf ที่ใช้ความสามารถของ Interface ใน Golang ในการเขียน Http Response
package main
import (
"fmt"
"net/http"
)
func hello(w http.ResponseWriter, req *http.Request) {
fmt.Fprintf(w, "hello world\n")
}
func main() {
http.HandleFunc("/hello", hello)
http.ListenAndServe(":8080", nil)
}
อยากเริ่มฝึก Golang แล้ว ทำยังไงดี?
สำหรับมือใหม่ที่อยากเริ่มเขียน Golang แนะนำให้เริ่มต้นจาก GoTour ในเว็บ Official ของ Golang ก่อนเลย ซึ่งใน GoTour จะแนะนำให้รู้จักกับภาษา Golang และ Feature เบื้องต้นต่างๆ ของ Golang ซึ่งมีแปลเป็นภาษาไทยด้วยสำหรับคนที่ไม่ถนัดภาษาอังกฤษ
สำหรับคนที่พอมีประสบการณ์ในการเขียน Golang มาระดับนึงแล้ว แนะนำให้ศึกษาใน Official Guide ของ Golang ที่ชื่อว่า Effective Go ที่จะสอนเกี่ยวกับ Convention ต่างๆ ในวิธีการเขียน Go ที่ดีและมีประสิทธิภาพ
สำหรับผู้ที่อยากฝึกเขียน Go หรืออยากเป็น Go Developer มืออาชีพ ตอนนี้ทาง Skooldio ได้มีคอร์สซีรีส์ Golang Course Series ที่จะสอนตั้งแต่เริ่มต้นการใช้ภาษา Go ไปจนถึงระดับ Advanced และสามารถสร้าง Project จริงของตัวเองออกมาได้ด้วยภาษา Go สมัครเรียนได้ที่นี่
บทความอื่นๆ ที่เกี่ยวข้อง
- ทำไม Google ถึงต้องสร้างภาษา Go ขึ้นมา?
- 4 ตัวอย่าง Tech ระดับโลก ที่ใช้ภาษา Go สร้าง High Performance Software
- Case Study: Microservices ภาษา Go รองรับมากกว่า 1 แสน request ต่อวินาที
- Go Tutorial Series EP.1: สร้าง REST API ด้วย Gin Framework
- Go Tutorial Series EP.2: เก็บข้อมูล API ใน Database ด้วย Gorm Library
- Go Tutorial Series EP.3: ทำ Authorization ด้วย JWT และ Middleware