环境:go1.7.3 win7 64bit
代码1的执行结果是隔一秒只打印0,不符合预期
```
0
0
0
...
```
把代码1改成代码2,结果就对了
```
353036023
713389754
1073135313
...
```
这是个什么情况,有大佬知道吗
**代码1:**
```
package main
import (
"fmt"
"time"
)
func main() {
i := 0
go func () {
for true {
//隔一秒打印i
time.Sleep(1000000000)
fmt.Println(i)
}
}()
for true {
i++
}
}
```
**代码2:**
```
package main
import (
"fmt"
"time"
)
func main() {
i := 0
go func () {
for true {
i++
}
}()
for true {
//隔一秒打印i
time.Sleep(1000000000)
fmt.Println(i)
}
}
```
第 1 条附言 ·
已解决这个问题,问题原因是go编译器默认优化了代码,在build的时候添加-gcflags '-N -l'禁用优化就可以了
更多评论