Go Installation and Setup

Back to Go Index

Installation on Linux

Install on Linux

rm -rf /usr/local/go && tar -C /usr/local -xvf go1.20.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin
go version

ตารางสรุปค่าที่ได้จาก go env

Project Setup

ถ้าเริ่มโปรเจคง่าย ๆ ใช้เอง

go mod init hello-world

ถ้าเริ่มโปรเจคแบบมาตรฐาน ทำ Open source ต้องใส่เป็น repository host หรือ domain name

go mod init github.com/nattrio/hello-world

เสร็จแล้วมันจะไปสร้าง Go module คือไฟล์ go.mod เพื่อช่วยจัดการ packages และ dependency ต่าง ๆ โดยสามารถกำหนดเวอร์ชั่นได้ ทำให้การจัดการมีประสิทธิภาพมากขึ้น

หากต้องการโหลด dependency ที่ต้องการในโปรเจค หรือมีการแจ้งเตือนว่าจำเป็นต้องใช้ ให้ใช้คำสั่ง go mod tidy

Best Practices

  • ชื่อไฟล์ของ go จะใช้เป็นตัวเล็กทั้งหมดและเว้นด้วย underscore เช่น cal_distance.go
  • ชื่อฟังก์ชันภายใน go จะใช้เป็น camelCase เช่น sumOfNumber
  • Entry point package คือ main
  • ในแต่ละ package (folder) ควรมีไฟล์ที่ตั้งชื่อเดียวกันกับ package ข้างในด้วย เช่น movie/movie.go

Import

เราสามารถใส่ underscore _ วางไว้หน้า package เพื่อระบุว่าให้ import เข้ามาแม้จะยังไม่ใช้งาน เนื่องจากบาง package จะเริ่ม init() ตอนเรียกใช้

import (
	_ "github.com/proullon/ramsql/driver"
)

Package

เป็นโฟลเดอร์ที่เอาไว้ใส่ source files ใน directory เดียวกัน และ compile ด้วยกัน

  • Field ขึ้นต้นด้วยตัวใหญ่ Public (มองเห็นจากนอก package ได้)
  • Field ขึ้นต้นด้วยตัวเล็ก Private (มองเห็นเฉพาะภายใน package นั้นๆ)
// Public
func Review(name string, rating float64) {
	fmt.Printf("!!! I reviewed %s and it's rating is %f\n", name, rating)
}
 
// Private
func review(name string, rating float64) {
	fmt.Printf("!!! I reviewed %s and it's rating is %f\n", name, rating)
}

See also: Go Syntax Basics

Init Function

init() คือ ฟังก์ชันที่จะถูกเรียกใช้งานทันที เมื่อมีการเข้าถึง package ใดๆ

func init() {
	fmt.Println("This will get called on main initialization")
} // [1]
 
func main() {
	fmt.Println("My Wonderful Go Program")
} // [2]

Related: