จากการแบ่งปันเรื่องการพัฒนาระบบงานด้วยภาษา Go นั้น
มีคำถามว่า fmt.Println() ต่างจาก println() อย่างไร ?
สิ่งที่ตอบไปเป็นดังนี้
- println() เป็น build-in function สร้างมาเพื่อการ debug เท่านั้น
- fmt.Println() เป็น function ใน package fmt
ดูสั้น ๆ ไปหน่อย เลยขยายความหน่อย
เริ่มจากการไปดู code ของทั้งคู่เป็นดังนี้
[gist id="ab21da3ae33ee015bab5f152880f7cc9" file="1.txt"]จะเห็นได้ว่า println() นั้นรับค่าได้เพียง primitive type
พวก array และ ข้อมูลพวก structure ต่าง ๆ ก็ไม่รองรับ
ส่วน fmt.Println() ใด ๆ ก็ได้ any คือ interface{} นั่นเอง รวมทั้งยังมี return value นะ
เพราะว่าหลาย ๆ คนน่าจะยังไม่รู้มั้ง !!
อีกทั้งถ้าดูในการ implement แล้วนั้น
println() จะทำการส่งข้อมูลมายัง standard error
ส่วน fmt.Println() จะทำการส่งข้อมูลมายัง standard output
รวมทั้ง fmt.Println() จะมี dependency เยอะ เช่น log package เป็นต้น
ส่วน println() นั้นไม่มีเลย
TODO