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
; 第三次,由于c
为nil
, 走的是default分支, 输出1
.
「真诚赞赏,手留余香」
真诚赞赏,手留余香
使用微信扫描二维码完成支付