一次糟糕的golang面试体验

airun · 2019-08-04 23:32:39

我的理解是这样的,第一个问题, str[0] = 'a' ([]byte)(str)[1] = b 由于等号左边表达式不可寻址,过不了编译。

第二个问题,我第一反应是没输出,因为主线程会比协程更快结束。上边也有人说了,加个sleep...

#10
更多评论

这个面试官有点2b

#1

这个面试官第二题肯定是错了。他测试少了

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 ```

#2