如何减少嵌套函数调用中的参数数量

我有一个结构如下的 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 语言设计的一些东西吗?:/


米脂
浏览 172回答 1
1回答

千巷猫影

如果所有这些都在一个包中,您可以简单地State在包级别声明并在任何地方使用它。例如;package myHttpClientimport (    "allthatstuff")state State // not exported but available everywhere in 'myHttpClient'ExternState State // exported so anyone importing myHttpClient can do myHttpClient.ExternState
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go