Golang Day 2 Tour of Golang 1
เส้นทางการเรียนรู้ Golang!
หลังจากที่แก้ปัญหาเมื่อวานได้จนสำเร็จวันนี้ก็ต่อเนื่องกันต่อกับการเรียนรู้ Golang ครับ
จากเมื่อวานผมสามารถ Import local module ได้สำเร็จแล้วผมก็กดเรียนต่อในบทถัดไปครับ ก็ได้เรียนรู้ในส่วนของ
Return and handle an error (การจัดการกับ error ครับ บทนี้ทำให้รู้ว่า golang function สามารถ return ค่าออกมาได้มากกว่า 1 ค่าด้วย wow มาก)
Add a test การเขียน Unit test ของ golang
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?