<iframe style="border:1px solid" src="https://wide.b3log.org/playground/023644aa4b26a464e3bdcbd80a2f5e4f.go?embed=true" width="99%" height="600"></iframe>
我感觉先计算的前半段,所以先赋值到sum1,所以sum1应该是15才对呢?
我在本机运行的时候,明明sum1是40的。在wide上就是15啦。
加go后的调度是无序的,不一定是先加先运行的哦。
另外:
package main
import "fmt"
var (
resultChan chan int = make(chan int, 1)
)
func sum(values []int) {
sum := 0
for _, value := range values {
sum += value
}
resultChan <- sum // 将计算结果发送到channel中
}
func main() {
values := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
go sum(values[:len(values)/2])
go sum(values[len(values)/2:])
sum1 := <-resultChan + <-resultChan // 接收结果
fmt.Println("Result:", sum1)
}
这样写会不会有什么不妥?
#3
更多评论