มาเขียน fsm ด้วย GO กันเถอะ
สวัสดีค่ะ วันนี้เราจะมาแชร์ เรื่องการเขียน state ด้วย go fsm ค่ะ
เริ่มจาก package ที่ใช้เลย ซึ่งก็คือ “github.com/looplab/fsm”
ตัวอย่าง
1. Define States and Events
ก่อนอื่นเมื่อเราได้ diagram ของ fsm ที่เราต้องการมาแล้ว เราต้องมากำหนด state ที่ต้องการกันก่อน
อย่างในตัวอย่างจะมี state คือ idle , going up , going down ,at top และ at bottom
หลังจากนั้นก็มากำหนด event ที่มี คือ go up , go down , halt , top limit hit และ bottom limit hit
2. Coding
เราจะเริ่มที่การ code ในส่วนการทำงานหลักเลย ส่วนเรื่องการประกาศตัวแปรศึกษาเพิ่มเติมที่ pakage ได้เลยค่ะ
สร้าง function ง่ายๆที่รับค่า state เริ่มต้นและ callback เข้ามา
ส่วนของการทำงานข้างในจะเริ่มเขียนด้วย pattern ของ package ส่วน events จะนำ events ทั้งหมดที่เป็นไปได้ใน fsm นี้มา
function จะเริ่มทำการเปลี่ยน state เมื่อมี event เข้ามา
ยกตัวอย่าง เมื่อใส่ state idle เข้าไปเป็น start state แล้ว ถ้ามี event go-up จะเปลี่ยน state ไปเป็น going-up
หรือ event go-down จะเปลี่ยนไปเป็น going-down
หรือถ้าเป็น event halt, top-limit-hit และ bottom-limit-hit จะไม่เปลี่ยนเป็น state อื่น
3. Testing
เพิ่มเติม ในส่วนของ callback นั้นจะมีหลายคำสั่ง เช่น
enter_<state> : ก่อนเข้า state อยากให้ทำอะไรบางอย่าง
leave_<state> : หลังจบ state อยากให้ทำอะไรบางอย่าง
และอื่นๆศึกษาเพิ่มเติมได้ที่ package นะคะ
ขอบคุณที่เข้ามาอ่านนะคะ ถ้าผิดพลาดก็ขออภัยด้วยนะคะ 🙏🏻