Go面试题57

Posted by     "" on Sunday, January 19, 2020

Go面试题57

1: 下面哪一行代码会panic, 请说明原因?

package main

func main() {
    var x interface{}
    var y interface{} = []int{3,5}

    _ = x == x
    _ = x == y
    _ = y == y
}

2: 下面的代码输出什么?

var o = fmt.Print

func main() {
    c := make(chan int, 1)
    for range [3]struct{}{} {
        select {
            default:
                o(1)
            case <-c:
                o(2)
                c = nil
            case c <-1:
                o(3)
        }
    }
}

参考答案及解析

1: 答案及解析: 第8行. 因为两个比较值的动态类型为同一个不可比较类型.

2: 答案及解析: 321. 第一次循环写操作已经准备好了, 执行o(3), 输出3; 第二次,读操作准备好了,执行o(2),执行o(2),输出2,并将c赋值为nil; 第三次,由于cnil, 走的是default分支, 输出1.

「真诚赞赏,手留余香」

Richie Time

真诚赞赏,手留余香

使用微信扫描二维码完成支付