我开发了以下内容:
package main
import "fmt"
import "time"
func add ( n int){
ch :=make(chan int)
sum :=0
for i:= 0;i<n;i++{
sum = sum+i
}
ch <- sum
fmt.Println("Sum is",sum)
}
func display(ch1 chan int){
fmt.Println("Sum is now",ch1)
}
func main() {
ch2 :=make(chan int)
go add(10)
go display(ch2)
fmt.Println("Hello World!")
time.Sleep(time.Second)
}
我想将当前总和传递到函数显示。 但是,当我打印总和时,我在控制台中收到以下消息:
世界你好! 现在总和是 0xc000094060
请帮忙打印当前金额。
您不是打印通道中的值,而是打印通道! 尝试:
package main
import "fmt"
import "time"
func add (ch chan int, n int){
sum :=0
for i:= 0;i<n;i++{
sum = sum+i
}
ch <- sum
fmt.Println("Sum is",sum)
}
func display(ch chan int){
fmt.Println("Sum is now", <-ch)
}
func main() {
ch :=make(chan int)
go add(ch, 10)
go display(ch)
fmt.Println("Hello World!")
time.Sleep(time.Second)
}
另外,为什么要在 goroutine 中运行 display 呢? 如果你在 add 中做了一些复杂的事情并且花费的时间超过 1 秒,那么这个应用程序将停止并且不执行任何操作。也许看看等待组。