首页
/ 开源项目 `looplab/fsm` 使用教程

开源项目 `looplab/fsm` 使用教程

2026-01-18 10:23:44作者:史锋燃Gardner

1. 项目的目录结构及介绍

looplab/fsm/
├── examples/
│   ├── basic/
│   │   ├── main.go
│   │   └── state_machine.go
│   ├── advanced/
│   │   ├── main.go
│   │   └── state_machine.go
│   └── ...
├── fsm/
│   ├── fsm.go
│   ├── callback.go
│   └── ...
├── .gitignore
├── LICENSE
├── README.md
└── go.mod
  • examples/: 包含多个示例项目,展示了如何使用 fsm 库。
    • basic/: 基础示例,展示了最简单的状态机使用。
    • advanced/: 高级示例,展示了更复杂的状态机配置和使用。
  • fsm/: 核心库文件,包含了状态机的实现和相关功能。
    • fsm.go: 状态机的主要实现文件。
    • callback.go: 回调函数的定义和实现。
  • .gitignore: Git 忽略文件配置。
  • LICENSE: 项目许可证。
  • README.md: 项目介绍和使用说明。
  • go.mod: Go 模块文件,定义了项目的依赖。

2. 项目的启动文件介绍

examples/basic/ 目录下,main.go 是项目的启动文件。以下是 main.go 的简要介绍:

package main

import (
    "fmt"
    "github.com/looplab/fsm"
)

func main() {
    fsm := fsm.NewFSM(
        "initial",
        fsm.Events{
            {Name: "run", Src: []string{"initial"}, Dst: "running"},
            {Name: "stop", Src: []string{"running"}, Dst: "stopped"},
        },
        fsm.Callbacks{
            "enter_state": func(_ context.Context, e *fsm.Event) {
                fmt.Println("Entering state", e.Dst)
            },
        },
    )

    fmt.Println(fsm.Current())
    fsm.Event("run")
    fmt.Println(fsm.Current())
    fsm.Event("stop")
    fmt.Println(fsm.Current())
}
  • main 函数是程序的入口点。
  • fsm.NewFSM 创建一个新的状态机实例。
  • fsm.Events 定义了状态机的事件和状态转换。
  • fsm.Callbacks 定义了状态转换时的回调函数。

3. 项目的配置文件介绍

looplab/fsm 项目本身没有特定的配置文件,所有的配置和定义都在代码中完成。例如,在 main.go 中,通过 fsm.NewFSM 函数定义了状态机的事件和回调函数。

fsm := fsm.NewFSM(
    "initial",
    fsm.Events{
        {Name: "run", Src: []string{"initial"}, Dst: "running"},
        {Name: "stop", Src: []string{"running"}, Dst: "stopped"},
    },
    fsm.Callbacks{
        "enter_state": func(_ context.Context, e *fsm.Event) {
            fmt.Println("Entering state", e.Dst)
        },
    },
)
  • "initial": 初始状态。
  • fsm.Events: 定义了状态机的事件和状态转换规则。
  • fsm.Callbacks: 定义了状态转换时的回调函数。

通过这种方式,开发者可以在代码中灵活地定义和配置状态机的行为。

登录后查看全文
热门项目推荐
相关项目推荐