forked from steger/pr3-ws202526
enums
parent
51691f2c19
commit
17d979d0ce
|
|
@ -0,0 +1,45 @@
|
|||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
type ServerState int
|
||||
|
||||
const (
|
||||
StateIdle ServerState = iota
|
||||
StateConnected
|
||||
StateError
|
||||
StateRetrying
|
||||
)
|
||||
|
||||
var stateName = map[ServerState]string{
|
||||
StateIdle: "idle",
|
||||
StateConnected: "connected",
|
||||
StateError: "error",
|
||||
StateRetrying: "retrying",
|
||||
}
|
||||
|
||||
func (ss ServerState) String() string {
|
||||
return stateName[ss]
|
||||
}
|
||||
|
||||
func main() {
|
||||
ns := transition(StateIdle)
|
||||
fmt.Println(ns)
|
||||
|
||||
ns2 := transition(ns)
|
||||
fmt.Println(ns2)
|
||||
}
|
||||
|
||||
func transition(s ServerState) ServerState {
|
||||
switch s {
|
||||
case StateIdle:
|
||||
return StateConnected
|
||||
case StateConnected, StateRetrying:
|
||||
|
||||
return StateIdle
|
||||
case StateError:
|
||||
return StateError
|
||||
default:
|
||||
panic(fmt.Errorf("unknown state: %s", s))
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue