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
「真诚赞赏,手留余香」
真诚赞赏,手留余香
使用微信扫描二维码完成支付