【发布时间】:2022-11-22 02:39:00
【问题描述】:
我是 Go 和使用频道的新手。此函数产生正确的结果,但我不确定它是否正确执行。它是一个简单的函数,旨在根据给定的汇率计算新的金额和余额。我知道它处理变量有点奇怪,但它们符合练习的规范。
它实际上是在单独的通道中执行计算,还是只是将变量发送到通道,然后在通道外独立执行计算?
func (a *Account) Calc(rate float32) {
c:=make(chan float32, 2)
c<-amount
c<-a.balance
amount+=s.balance*rate
a.balance+=a.balance*rate
}
谢谢你的帮助。我已经阅读了几个不同的例子,但我仍然不清楚。
结果符合预期,但由于它可以在不使用任何通道的情况下工作,所以我不确定工作是否真的在通道中完成。
【问题讨论】:
-
在这里使用
c频道是完全没有必要的,只会混淆代码。如果那是您发布的完整代码,则没有人会从该频道收到任何人。只需删除那些行。如果您确实需要使用通道,我怀疑存在或应该有另一个实体(可能作为并发 goroutine 运行)应该接收值并执行计算。