พอดีเพิ่งลองทำ project ส่วนตัว เพื่อแก้ไขปัญหาบางอย่างของตัวเอง
ซึ่งทำการเขียน code ด้วยภาษา Go นี่แหละ
มีขั้นหนึ่งต้องทำการ filter ข้อมูลที่อยู่ใน array/slice
ปกติก็ใช้งาน for loop กับ if statement นี่แหละ
แต่ก่อนหน้านี้ เพิ่งเขียน JavaScript มา
ซึ่งมีพวก map/reduce/filter อะไรพวกนี้ให้
แล้วในภาษา Go ละ มีไหมนะ ?
ก็เลยลองไปหาและดูใน community ก็เจอเยอะเลย
มี project ตัวนึงของคุณ Rob Pike ชื่อว่า Filter
ซึ่งมี พวก map/reduce/filter ให้ใช้งานด้วย
เป็น project ที่สร้างขึ้นมาเพื่อทดลอง
การใช้งานในกรณีของผมก็ไม่ยาก
ต้องการเพียง filter หรือกรองข้อมูลที่ต้องการเท่านั้น
ดังนั้นเขียน function ของเงื่อนไขในการกรองสิ่งที่ต้องการดังนี้
[gist id="0558fce941f8f6eb022ccd673e55e4af" file="1.go"]จากนั้นก็ใช้งาน filter ที่สร้างดังนี้
[gist id="0558fce941f8f6eb022ccd673e55e4af" file="2.go"]เพียงเท่านี้ก็ใช้งานแบบง่าย ๆ ได้แล้ว
โดยส่วนตัวผมชอบในเรื่องของการใช้งาน
เพราะว่าง่าย สะดวก ดูง่ายดีนะ
ไปดูแนวทางการสร้าง project filter หน่อยสิ
ใช้งาน package reflect นั่นเอง
ดังนั้นก็ต้องระวังการใช้งานมาก ๆ ในตอน runtime
แน่นอนว่า ต้องป้องกันด้วยการเขียน test ให้ครอบคลุมนั่นเอง
แนวทางน่าสนใจมาก ๆ
ทั้งเรื่องของแนวคิดและเทคนิคที่ใช้ในการสร้าง
แต่สุดท้าย ผู้สร้างบอกว่า ใช้ for loop นั่นแหละดีแล้ว !!
ลองไปดูการพูดคุยเกี่ยวกับ project filter เพิ่มได้
หรือไปดู project ที่คล้าย ๆ กันเช่น Go-funk
หรือไปดู Map/Reduce/Filter in Go
ลองทำ project เล่น ๆ แต่ก็ได้ความรู้ที่เราคาดไม่ถึงเยอะเลย
ขอให้สนุกกับการ coding ครับ