我开始和 Go 混在一起,我对 go routines 很着迷。我现在写了一个简单的测试,看看我是否可以在连续打印变量的同时更改它的值。
我现在有以下代码:
package main
import (
"fmt"
"time"
)
func change(c chan float64) float64 {
time.Sleep(2 * time.Second)
return 2.5
}
func main() {
s := 1.1
c := make(chan float64)
go change(c)
s = <-c
for {
fmt.Println(s)
time.Sleep(100 * time.Millisecond)
}
}
不幸的是它以错误结束:
fatal error: all goroutines are asleep - deadlock!
goroutine 1 [chan receive]:
main.main()
/home/kramer65/repos/go/src/messing_around/main.go:19 +0x7d
exit status 2
我四处搜索,发现当 main 函数结束而 goroutines 还没有结束时,就会发生这种死锁。但是由于我有一个无限循环,我不知道我的代码还有什么问题。
这段代码有什么问题,我如何在不断打印变量的同时更改它的值?
天涯尽头无女友
相关分类