Screen Shot 2557-04-14 at 3.01.54 PM

กำลังศึกษาภาษาใหม่ คือ Golang
ดังนั้นสิ่งแรกที่เราควรอ่านก่อนเลย คือ เอกสารที่ web มันนั่นเอง
หลังจากที่ทำการติดตั้งแล้ว ต่อจากนั้นต้องอ่าน Go Effective เลย

เมื่อเริ่มต้นอ่านเอกสารของภาษา Golang พบว่า
จะเน้นในเรื่องของ Coding standard ต่างๆ อย่างมาก
ตั้งแต่เรื่องของ

  • Code formatting
  • การ comment
  • เรื่องของชื่อ ทั้ง package, Getter, interface
  • โดยชื่อนิยมใช้ MixedCaps หรือ Camel case นั่นเอง มากกว่าการใช้ underscore (_) คั่นระหว่างคำ

ส่วนที่น่าสนใจก็คือ Code formatting
ทาง Golang นั้นได้เตรียมโปรแกรม ชื่อว่า  gofmt มาให้

$gofmt test.go

ถ้าต้องการให้แก้ไขที่ไฟล์เลย ใช้คำสั่ง

$gofmt -w test.go

ส่วนเรื่อง comment
นั้นสามารถใช้ในลักษณะเดียวกัยภาษา C, C++ และ Java
โดยมีโปรแกรม gdoc เพื่อดึงส่วน comment ออกมา เพื่อสร้างเอกสารต่อไป

ในเรื่องของชื่อนั้นสำคัญมากๆ 
เพราะว่าชื่อตัวเล็กตัวใหญ่มีผมต่อ Golang มาก
กล่าวคือ ถ้าชื่อขึ้นต้นด้วยตัวพิมพ์ใหญ่ จะสามารถมองเห็นหรือเข้าถึงได้จากนอก package

ในเรื่องของชื่อ interface นั้นชื่อจะลงท้ายด้วย -er เสมอ
เช่น Writer, Reader, Notifier, Formatter เป็นต้น

ส่วนชื่อ method นั้นจะเป็นการกระทำนั้นๆ ไป
เช่น Read, Write, Close, Flush, String (คือการ convert มาเป็น String หรือในภาษา Java จะใช้ toString)

ถึงแม้ว่าจะมี grammar ต่างๆ เหมือนภาษา C
แต่จะสังเกตุว่าไม่จำเป็นต้องใส่เครื่องหมาย semicolon(;) ท้ายบรรทัด
เนื่องจาก compiler มันจะใส่ให้เองอัตโนมัติ
โดยมันก็มีกฎการทำงานเช่นกัน
ดังนั้นจึงมีข้อแนะนำที่น่าสนใจ หรือมองว่าเป็น Coding converention ไปได้เลย เช่น

code แบบนี้ทำงานได้ถูกต้อง

if i < f() {
     g()
}

แต่แบบนี้ทำงานไม่ถูกต้อง จะเกิด error ว่า expected operand, found ‘{‘

if i < f()
{
     g()
}

Control structure
ใน go จะไม่มี do และ while loop เนื่องจาก for loop ก็เพียงพอแล้ว
แต่มีตัวใหม่ขึ้นมาชื่อว่า select
ซึ่งรวมเอาทั้ง switch และ การติดต่อกันแบบกลายทางเข้าด้วยกัน

For สามารถเขียนได้หลายรูปแบบ เช่น
รูปแบบปกติ

for init; condition; post {
}
 

รูปแบบเหมือน while loop

for condition {
}

รูปแบบเหมือน for(;;;)

for {
}

_ คือ blank identifier เอาไว้สำหรับค่าที่เราไม่สนใจ เช่น

for  _, value := range array {
}

คือเราไม่สนใจค่าแรกที่ดึงมาจาก array แต่สนใจเพียง value ของมันเท่านั้น

Switch-case นั้นทำงานในรูปแบบเดียวกับ if-else-if-else
คือใน case ไม่ใช่ตัวเลขหรือค่าคงที่ แต่เป็นเงื่อนไขเช่นเดียวกับ if ได้

ต่อไปทำการศึกษาเรื่อง Function ต่อไป

Tags: