Multiple return values

Go สามารถเขียน Function ให้สามารถ return หลายค่าออกมาได้ ซึ่งถ้าดูจาก standard package จะเห็นว่าส่วนใหญ่ใช้ไปกับการส่งค่า error กลับออกมาเป็นค่าที่สองของ Function ซะเยอะ มีบ้างบาง Function ที่ส่งกลับ 3 ค่า แต่น้อยมาก ตัวอย่างเช่น Function os.Open ใน package os ที่เอาไว้เปิดไฟล์ถูกประกาศไว้ดังนี้

func Open(name string) (file *File, err error)

เวลาใช้งาน ถ้าเราต้องการรับค่าจาก Function Open มาเก็บไว้ ด้านซ้ายของเครื่องหมาย = หรือ := ก็ต้องกำหนดตัวแปรสองตัวตามลำดับไว้สำหรับเก็บ file และ err เช่น

f, err := os.Open(“test.txt”)

ทีนี้เราลองสร้างของเราเองสัก Function เช่นเราต้องการสร้าง Function หารเลข โดยที่ตัวหารต้องไม่เป็น 0 ถ้าเป็น 0 เราจะส่งค่า error กลับออกไป เขียนได้ง่ายๆแบบนี้

ลองเล่นบน Playground ดูได้ที่ http://play.golang.org/p/o9OHkGabIT

ซึ่งจากโค้ดจะเห็นการส่งค่า error ง่ายๆโดยใช้ errors.New และการตรวจสอบค่า error ง่ายๆโดยการรับค่า return กลับมาแล้วเช็คว่า error ไม่เท่ากับ nil ก็แสดงว่ามี error เกิดขึ้นนั่นเอง เดี๋ยวคราวหลังมาว่าด้วยวิธีการที่ Go ตรวจสอบ error และค่า error กันอีกที

สรุปก็จะเห็นว่า Go สร้างให้ส่งค่ากลับได้หลายค่า ซึ่งก็ได้เอามาใช้สำหรับสร้างกลไกตรวจสอบค่า error และใช้สร้างการทำงานอื่นๆได้ง่ายขึ้นมาก