Go面试题58

Posted by     "" on Thursday, February 6, 2020

Go面试题58

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

type T struct {
    x int
    y *int
}

func main() {
    i := 20
    t := T{10, &i}

    p := &t.x

    *p++
    *p--

    t.y = p

    fmt.Println(*t.y)
}

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

package main

func main() {
    x := make([]int, 2, 10)
    _ = x[6:10]
    _ = x[6:]
    _ = x[2:]
}

参考答案及解析

1: 答案及解析: 10. 知识点: 运算符优先级. 如下规则: 递增运算符++ 和 递减运算符--的优先级低于解引用运算符* 和 取址运算符&, 解引用运算符和取址运算符的优先级低于选择器.中的属性选择操作符.

2: 答案及解析: 第6行, 截取符号[i:j], 如果j 省略, 默认是原切片或者数组的长度, x的长度是2, 小于起始下标6, 所以panic

「真诚赞赏,手留余香」

Richie Time

真诚赞赏,手留余香

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