为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
米脂 2021-10-25 16:19:26
我有一个结构如下的 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 语言设计的一些东西吗?:/
查看完整描述

1 回答

?
千巷猫影

TA贡献1829条经验 获得超7个赞

如果所有这些都在一个包中,您可以简单地State在包级别声明并在任何地方使用它。例如;


package myHttpClient


import (

    "allthatstuff"

)


state State // not exported but available everywhere in 'myHttpClient'

ExternState State // exported so anyone importing myHttpClient can do myHttpClient.ExternState



查看完整回答
反对 回复 2021-10-25
  • 1 回答
  • 0 关注
  • 171 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信