我有一个结构如下的 go Calltree:
// state is a common struct shared among all "instances" of MyType - simulating member variables for an Interface
(s MyType) Run(state *State){ // called from outside
// define goroutines that fetch something via http
HTTPCallback(){ // runs on every http response
parseData(record, outputChan)
}
}
(s MyType) parseData(rec []string, outputChan chan(interface{})){
// doesn't need anything from "state" so far
doIdMapping(string)
}
doIdMapping(key) {
return state.Map[key]
}
有没有一种方法可以访问 Map(它是完全不变的),而不必被迫通过 HTTPCallback 传递“状态”,并且上面的所有 goroutine 最终都会调用 HTTPCallback?
这不仅对清晰的代码不利,而且对测试也不利。所有中间函数都带有它们甚至不需要依赖的结构指针。我错过了关于 go 语言设计的一些东西吗?:/
千巷猫影
相关分类