gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 03:06:53 26 4
gpt4 key购买 nike

我有一个 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]
}

有没有办法通过 HTTPCallback 和上面所有最终调用 HTTPCallback 的 goroutine 传递“状态”来访问 Map(它是完全不变的)?

这不仅不利于清晰的代码,而且不利于测试。所有中间函数都带有它们甚至不需要依赖的结构指针。我是不是漏掉了 go 的语言设计? :/

最佳答案

如果所有这些都在一个包中,您可以简单地在包级别声明 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

关于go - 如何减少嵌套函数调用中的参数数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31569071/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com