我对golang很熟悉,对指针很困惑。
type Transition struct {
ID string
InitialState *State
CurrentState *State
Input string
Output string
Stimul *int
}
func (t *Transition) SetStimul(stimul int) {
t.Stimul = &stimul
}
func (sm StateMachine) Fill() StateMachine {
sort.Sort(sm)
i := 0
for _, t := range sm {
if t.InitialState.code == nil {
t.InitialState.SetCode(i)
i++
}
}
// сигналы выозбуждения
for _, t := range sm {
t.SetStimul(*t.InitialState.code)
}
return sm
}
我更改了 Transition.Stimul 指针的值(它最初是 nil),但它仍然显示 nil(最后一列)。
2 A1 A2 00000 00001 <nil>
3 A2 A3 00001 00010 <nil>
4 A3 A4 00010 00011 <nil>
5 A4 A5 00011 00100 <nil>
6 A5 A6 00100 00101 <nil>
7 A5 A1 00100 00000 <nil>
8 A6 A7 00101 00110 <nil>
9 A7 A8 00110 00111 <nil>
10 A8 A9 00111 01000 <nil>
11 A9 A10 01000 01001 <nil>
12 A10 A11 01001 01010 <nil>
13 A11 A12 01010 01011 <nil>
14 A12 A13 01011 01100 <nil>
15 A13 A14 01100 01101 <nil>
16 A14 A15 01101 01110 <nil>
17 A15 A16 01110 01111 <nil>
18 A15 A16 01110 01111 <nil>
19 A16 A17 01111 10000 <nil>
20 A16 A17 01111 10000 <nil>
21 A17 A18 10000 10001 <nil>
22 A18 A19 10001 10010 <nil>
23 A19 A20 10010 10011 <nil>
24 A20 A21 10011 10100 <nil>
25 A21 A22 10100 10101 <nil>
26 A22 A23 10101 10110 <nil>
28 A23 A14 10110 01101 <nil>
29 A23 A14 10110 01101 <nil>
30 A24 A25 10111 11000 <nil>
31 A25 A26 11000 11001 <nil>
32 A26 A21 11001 10100 <nil>
我究竟做错了什么?
完整代码: https: //play.golang.org/p/a1874uZafs
写
type StateMachine []*Transition
然后
t.SetStimul()
会改变项目StateMachine
。