1. 首页
  2. 主题
  3. Go问与答

并发循环如何理解???? go for

michael_xu · · 1857 次点击
```go package main import "fmt" func f(from string) { for i := 0; i < 3; i++ { fmt.Println(from, ":", i) } } func main() { go f("test") var input string fmt.Scanln(&input) fmt.Println("done") } ``` 很简单的代码,但是这样做的实质作用是什么? 难道go for 循环是把i 进行切分然后多核进行运算的?
对不起 我不喜欢看说明。。。
#8
更多评论
你不好理解,就理解为多线程
#1
```go package main import &#34;fmt&#34; import &#34;time&#34; const ( //NUM = 10000000000000 //hang for process NUM = 1000000000 ) func f(from string) { for i := 0; i &lt; NUM; i++ { i = i * 1 } } func main() { t0 := time.Now().UnixNano() f(&#34;direct&#34;) t := time.Now().UnixNano() go f(&#34;goroutine&#34;) t1 := time.Now().UnixNano() go func(msg string){ for i := 0; i &lt; NUM; i++{ i = i * 1 } }(&#34;going&#34;) t2 := time.Now().UnixNano() fmt.Println(&#34;func:&#34;, t-t0, &#34;ns, s:&#34;, (t-t0) / 1000000000) fmt.Println(&#34;go func:&#34;, t1-t, &#34;ns, s:&#34;, (t1-t) / 1000000000) fmt.Println(&#34;go unknow func:&#34;, t2-t1, &#34;ns, s:&#34;, (t2-t1) / 1000000000) } ``` ``` $$ time go run goroutines2.go func: 1048079427 ns, s: 1 go func: 12735 ns, s: 0 go unknow func: 1293 ns, s: 0 real 0m1.366s user 0m1.087s sys 0m0.067s ``` $ cat run.c ```c #include &lt;string.h&gt; #include &lt;stdio.h&gt; int main(){ int i; for(i=0; i &lt; 1000000000; i++){ i = 1*i; } return 1; } ``` ``` $ time ./a.out real 0m3.970s user 0m3.030s sys 0m0.008s ```
#2

用户登录

没有账号?注册

今日阅读排行

    加载中

一周阅读排行

    加载中