Golang Day 2 Tour of Golang 1

เส้นทางการเรียนรู้ Golang!

หลังจากที่แก้ปัญหาเมื่อวานได้จนสำเร็จวันนี้ก็ต่อเนื่องกันต่อกับการเรียนรู้ Golang ครับ

จากเมื่อวานผมสามารถ Import local module ได้สำเร็จแล้วผมก็กดเรียนต่อในบทถัดไปครับ ก็ได้เรียนรู้ในส่วนของ

  1. Return and handle an error (การจัดการกับ error ครับ บทนี้ทำให้รู้ว่า golang function สามารถ return ค่าออกมาได้มากกว่า 1 ค่าด้วย wow มาก)

  2. Add a test การเขียน Unit test ของ golang

  3. Compile and install the application สุดท้ายคือการ install และเรียกใช้ golang ของเรานั้นเองครับ

แล้วหลังจากนั้น Official documents ก็จะพาเราเข้าสู่การเรียนรู้ Syntax ของ Golang กันแล้วครับ (เย้)

เริ่มเรียน Golang syntax

ใครที่อยากจะเริ่มทัวร์ด้วยกันกดตามลิ้งนี้ไปได้เลยครับ A Tour of Go ก็จะมีสอนตั้งแต่ Basic กันเลย ตัว tutorial อธิบายกระชับดี และมี editor ให้ทดลอง run ด้านข้างเลยถือว่าสะดวกสบายมากเลยครับ

และใน day 2 นี้ผมก็ไม่ได้ตะบี้ตะบันเรียนจนหมดนะครับพึ่งเรียนไปได้ 2 บทเอง (ฮา) ค่อย ๆ เป็นค่อย ๆ ไปครับ

หลังจากเรียนแล้วก็ขอจด lecture สิ่งที่น่าสนใจของ Golang ที่แตกต่างจาก Javascript กันไว้หน่อยครับ

การตั้งชื่อ มีส่วนสำคัญในการ export

หากเราต้องการ export ค่าหรือ function ให้กับ module อื่น เราต้องตั้งชื่อให้เริ่มต้นที่ตัวพิมพ์ใหญ่เท่านั้นครับ (capital letter) เพราะถ้าหากเราตั้งชื่อเริ่มต้นด้วยตัวพิมพ์เล็กแล้ว module อื่นที่ import module นี้ไปจะมองไม่เห็นค่าหรือfunction นั้น ๆ ครับ

func Hello(name string) (string, error) {
	if name == "" {
		return "", errors.New("empty name")
	}
	message := fmt.Sprintf(randomFormat(), name)
	return message, nil
}
// function Hello สามารถถูกเรียกใช้ใน module อื่นได้

func randomFormat() string {
    formats := []string{
        "Hi, %v. Welcome!",
        "Great to see you, %v!",
        "Hail, %v! Well met!",
    }
    return formats[rand.Intn(len(formats))]
}
// function randomFormat จะไม่เห็นใน module อื่น

Function สามารถ return ค่าได้มากกว่า 1 ค่า

Golang อนุญาติให้เรา return ค่าได้มากกว่า 1 ค่า เพียงแค่เราระบุ return type ตามต้องการในวงเล็บแบบนี้ครับ

func swap(x, y string) (string, string) {
	return y, x
}

การประกาศตัวแปร

Golang มีการประกาศตัวหลายท่วงท่าดีครับ

//ประกาศหลายตัว ๆ ทีเดียว
var num1, num2, num3

//ประกาศหลายตัว แล้วกำหนดค่าอีกด้วย (่ค่าจะใส่ตามลำดับที่ประกาศ)
var num1, num2, num3 = 1, 2, 3

//ประกาศหลายตัวแบบหลายบรรทัด
var (
    num1 = 1
    num2 = 2
    num3 = 3
)

//ประกาศแบบสั้น short hand (ใช้ := แทน และไม่ต้องประกาศ var)
num1 := 1

//ประกาศแบบสั้น แต่หลายตัวพร้อมกัน
num1, num2, num3 := 1, 2, 3

//ประกาศค่าแบบแก้ไขไม่ได้
const Pi = 3.14

การประกาศค่าก่อน if

ใน JavaScript เราเคยเห็นการประกาศค่าก่อนแค่ for loop (มั้ง?) แต่ Golang สามารถประกาศก่อน if ได้ด้วย wow มากเลย

if v := 1 + 5; v < 10 {
		return v
	}

ก็มีประมาณนี้ครับจากที่ผมได้ศึกษามาทั้ง 2 บทจะมีส่วนนี้แหละที่โดดเด่นออกมาให้จดจำ ส่วนอื่น ๆ ก็คล้าย ๆ กับ JavaScript ที่เราคุ้นเคยครับ

เอาจริง ๆ วันนี้ผมคิดว่าจะอ่านต่อเพิ่มอีกซักนิดหน่อย แต่ขอตัด Day 2 ไว้เพียงแค่นี้ดีกว่าครับ เดียวลืมมาเขียน (ฮา)

โดยรวม 2 วันก็ยังไม่ได้อะไรมากครับ แค่ได้เห็นกระบวนการกับ syntax เล็ก ๆ น้อย ๆ ยังไม่ดูเป็นรูปเป็นร่างสำหรับงาน back-end เท่าไหร่ ค่อยว่ากันใหม่วันพรุ่งนี้ วันนี้สวัสดีครับ

Last updated

Was this helpful?