Quantcast
Channel: cc :: somkiat
Viewing all articles
Browse latest Browse all 1997

[Golang] :: ไม่ใช้งาน for loop

$
0
0

พอดีเพิ่งลองทำ 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 ให้ครอบคลุมนั่นเอง

[gist id="0558fce941f8f6eb022ccd673e55e4af" file="3.go"]

แนวทางน่าสนใจมาก ๆ  
ทั้งเรื่องของแนวคิดและเทคนิคที่ใช้ในการสร้าง
แต่สุดท้าย ผู้สร้างบอกว่า ใช้ for loop นั่นแหละดีแล้ว !!

ลองไปดูการพูดคุยเกี่ยวกับ project filter เพิ่มได้
หรือไปดู project ที่คล้าย ๆ กันเช่น Go-funk
หรือไปดู Map/Reduce/Filter in Go

ลองทำ project เล่น ๆ แต่ก็ได้ความรู้ที่เราคาดไม่ถึงเยอะเลย
ขอให้สนุกกับการ coding ครับ


Viewing all articles
Browse latest Browse all 1997

Trending Articles