Ratchaphon Hinsui

System and Software Engineer | Student at Kasetsart University | Classical Piano @ABRSM

Go Essentials

เป้าหมายของ Blog นี้ เพื่อให้ผู้อ่านได้เห็นภาพรวม และเป้าหมายที่จะได้จาก Blog นี้

  • ต้องเข้าใจ Component ของ Go ก่อน
  • ใช้งาน Values และ Type
  • สร้าง และ รัน Function
  • ควบคุมการไหลของโปรแกรมด้วย Control Structures

Key Component Go Programming

จากตัวอย่าง โค้ด Basic เบื้องต้นนี้ จะเห็น Component หลักของภาษา Go ทั้งหมด

package main <-- ชื่อ package บงบอกว่า อยู่ใน package ชื่อว่าอะไร

import "fmt" <-- เป็นการเรียกใช้ package อื่นๆ

func main() {
	fmt.Print("Hello World") <-- เรียกใช้ function Print ที่อยู่ใน package `fmt`
}
Code language: Go (go)

Note Go lang ใช้ double quotes “ “ อย่างเดียว หรือ backtick ` `

โดยอย่างน้อยใน 1 application ต้องมี 1 package นั่นก็คือ package main

และสามารถมี หลายๆ package ได้ เพื่อที่จะ organize code ให้ดี เป็นสัดสวนแล้วนำกลับมา reuse ได้อีกครั้ง

ถ้าเรามีหลายๆโปรเจ็ค เราสามารถนำ package ที่เคยเขียนกลับมา reuse ใช้ซ้ำได้

เราสามารถค้นหา Package Standard ของ Go ได้จาก https://pkg.go.dev/std

Main Package and Main Function

main package เป็น Package พิเศษ ที่จะบอก Go ว่า จะเป็นจุดเริ่มต้นของโปรแกรม และ function main จะเป็น function แรกที่จะเริ่ม excute

package main <-- ชื่อ package บงบอกว่า อยู่ใน package ชื่อว่าอะไร

import "fmt" <-- เป็นการเรียกใช้ package อื่นๆ

func main() {
	fmt.Print("Hello World") <-- เรียกใช้ function Print ที่อยู่ใน package `fmt`
}

Code language: Go (go)

โดยเวลา Develop เราจะบอกว่า file ไหนที่เรา exclute

go run main.go
Code language: Bash (bash)

แต่พอเอาไปใช้งานจริง ถ้าไม่มี package main และ function main ไฟล์ binary ที่เรา build หลังจาก Develop เสร็จนั้น จะหาจุดเริ่มต้นของโปรแกรมไม่เจอ

go buildCode language: Bash (bash)

Go Modules and Go Build

Main Module ของ Go จะเป็นตัวช่วยบอก Go Package ว่า Package แต่ละอันที่นำมาใช้อยู่ที่ไหน

โดยก่อนเริ่มโปรเจ็คควรสร้าง Go Module ก่อน เป็นอันดับแรก

go mod init <Github url>
Code language: Bash (bash)

ด้วยที่ตามหลังมาจะเป็น path

เช่น

Github Url ถ้า ต้องการที่จะทำเป็น Third Party library

หลังจากสร้าง จะได้ไฟล์ที่ชื่อว่า go.mod

module example.com/first-app

go 1.21.2Code language: Go (go)

โดยสิ่งที่ go module บอกนั้น จะบอกว่า โค้ดที่อยู่ใน folder นี้จะอยู่ใน Module ชื่อ example.com/first-app

และจะบอกด้วยว่า มี Library จาก Module ที่ไหนบ้างที่เอามาใช้

ตัวอย่างที่มี Module อื่นๆที่ใช้

module example.com/first-app

go 1.21.2

require (

github.com/andybalholm/cascadia v1.3.3 // indirect

)
Code language: Go (go)

หลังจากที่มี Go module เรียบร้อยแล้ว เราก็จะสามารถสร้าง Executable ได้

go build
Code language: Go (go)

โดยเราจะได้ Execute table ตามสถาปัตยกรรมที่ใช้ Build เช่น ใช้ Window Build จะได้ .exe

โดยที่ คนที่นำ Execute table ไปใช้ ไม่จำเป็นต้องติดตั้ง Golang

Tip
การตั้งชื่อไฟล์ ใน Go ถ้าชื่อยาว มักใช้ underscores ในการแบ่งคำของชื่อไฟล์

Leave a Reply

Your email address will not be published. Required fields are marked *