是否可以让函数- (NSNumber *)myMethod {
double amount = 42;
[NSNumber numberWithDouble:amount]
return [NSDecimalNumber numberWithDouble:amount];
}
具有以下接口:
funcWithNonChanResult
如果我希望它使用带有接口的函数func funcWithNonChanResult() int {
:
funcWithChanResult
换句话说,我可以某种方式将func funcWithChanResult() chan int {
转换为chan int
吗?或者我必须在使用int
的所有函数中都有chan int
结果类型?
目前,我尝试了这些方法:
funcWithChanResult
完整代码:
result = funcWithChanResult()
// cannot use funcWithChanResult() (type chan int) as type int in assignment
result <- funcWithChanResult()
// invalid operation: result <- funcWithChanResult() (send to non-chan type int)
答案 0 :(得分:5)
chan int
是一个int
值的渠道,它不是一个int
值,而是int
值的来源(或者也是一个目标,但在您的你使用它作为来源的情况。)
因此,您无法将chan int
转换为int
。你可以做什么,可能你的意思是使用从int
收到的值chan int
作为int
值。
这不是问题:
var result int
ch := funcWithChanResult()
result = <- ch
或更紧凑:
result := <- funcWithChanResult()
将此与return
语句结合使用:
func funcWithNonChanResult() int {
return <-funcWithChanResult()
}
输出(如预期):
Received first int: 123
Received second int: 123
在Go Playground上尝试修改后的工作示例。