我有一个导入循环需要解决,具体模式如下:
view/
- view.go
action/
- action.go
- register.go
总体思路是在视图上执行操作,并由视图执行:
// view.go
type View struct {
Name string
}
// action.go
func ChangeName(v *view.View) {
v.Name = "new name"
}
// register.go
const Register = map[string]func(v *view.View) {
"ChangeName": ChangeName,
}
然后在view.go中,我们调用了这个:
func (v *View) doThings() {
if action, exists := action.Register["ChangeName"]; exists {
action(v)
}
}
但这会导致循环,因为View依赖于Action包,反之亦然。我该如何解决这个循环?是否有一种不同的方法来处理这个问题?