点击上方蓝色“Golang来啦”关注我哟
加个“星标”,天天 15 分钟,一起学 Go
1.下面的代码输出什么?
1type T struct { 2 x int 3 y *int 4} 5 6func main() { 7 8 i := 20 9 t := T{10,&i} 10 11 p := &t.x 12 13 *p++ 14 *p-- 15 16 t.y = p 17 18 fmt.Println(*t.y) 19}参考答案及解析:10。知识点:运算符优先级。如下规则:递增运算符 ++ 和递减运算符 -- 的优先级低于解引用运算符 * 和取址运算符 &,解引用运算符和取址运算符的优先级低于选择器 . 中的属性选择操作符。
2.下面哪一行代码会 panic,请说明原因?
1package main 2 3func main() { 4 x := make([]int, 2, 10) 5 _ = x[6:10] 6 _ = x[6:] 7 _ = x[2:] 8}参考答案:第 6 行,截取符号 [i:j],如果 j 省略,默认是原切片或者数组的长度,x 的长度是 2,小于起始下标 6 ,所以 panic。
两题均引自:《Go语言101》
解析若有不妥之处,欢迎在留言区交流、指正!
看下今天的题目:
1type N int 2 3func (n *N) test(){ 4 fmt.Println(*n) 5} 6 7func main() { 8 var n N = 10 9 p := &n 10 11 n++ 12 f1 := n.test 13 14 n++ 15 f2 := p.test 16 17 n++ 18 fmt.Println(n) 19 20 f1() 21 f2() 22}引自:《Go语言学习笔记》· 方法
2.下面哪一行代码会 panic,请说明原因?
1package main 2 3func main() { 4 var m map[int]bool // nil 5 _ = m[123] 6 var p *[5]string // nil 7 for range p { 8 _ = len(p) 9 } 10 var s []int // nil 11 _ = s[:] 12 s, s[0] = []int{1, 2}, 9 13}引自:《Go语言101》
答案以及解析会在下一篇文章中给出,鼓励大家在留言区留下答案,抱团学习,日拱一卒,每天进步一点!
ps:看完文章如果有收获,顺手花 1s 时间帮点下文末右下方的「在看」,感激!
所有学习上的成功,都只依靠两件事 -- 策略和坚持,而坚持本身就是最重要的策略!
推荐阅读: