初级会员
  • 第 40879 位会员
  • wy666
  • 2019-07-27 11:02:25
  • Offline
  • 46 15

最近发布的主题

    暂无

最近发布的文章

    暂无

最近分享的资源

    暂无

最近发布的项目

    暂无

最近的评论

  • 这个面试官第二题肯定是错了。他测试少了 ``` package main import ( "fmt" "time" ) func main() { m := map[string]int{ "a":1, "b":2, "c":3, } for k,v := range m { go func(kk * string,vv * int) { fmt.Printf(" %v , %v \n",*kk,*vv) }(&k,&v) //d } // this is fine 3 time.Sleep(1 * time.Second) } ``` 多运行几次能够得到三种不同结果 b,2 b,2 b,2 c,3 c,3 c,3 a ,1 a ,1 a ,1 ```
  • 我知道的不会太准确。粗略的说,编译器最底层的部分(bootstrapping)是汇编和c作为基本go语言支持,然后在此基础之上用以前版本的go来写剩下的go编译器,这个编译器生成后能够完全处理当前版本的go语言。