กำลังศึกษาภาษาใหม่ คือ 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 ต่อไป