本文共 1446 字,大约阅读时间需要 4 分钟。
点击上方蓝色“Golang来啦”关注我哟
加个“星标”,天天 15 分钟,一起学 Go
1.下面的代码输出什么?
1type N int 2 3func (n *N) test(){ 4 fmt.Println(*n) 5} 6 7func main() { 8 var n N = 10 9 p := &n1011 n++12 f1 := n.test1314 n++15 f2 := p.test1617 n++18 fmt.Println(n)1920 f1()21 f2()22}
参考答案及解析:13 13 13。知识点:方法值。当目标方法的接收者是指针类型时,那么被复制的就是指针。
引自:《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 // nil11 _ = s[:]12 s, s[0] = []int{1, 2}, 913}
参考答案及解析:第 12 行。因为左侧的 s[0] 中的 s 为 nil。
引自:《Go语言101》
解析若有不妥之处,欢迎在留言区交流、指正!
看下今天的题目:
1package main 2 3type T struct{} 4 5func (*T) foo() { 6} 7 8func (T) bar() { 9}1011type S struct {12 *T13}1415func main() {16 s := S{}17 _ = s.foo18 s.foo()19 _ = s.bar20}
2.下面的代码有什么问题?
1type data struct { 2 sync.Mutex 3} 4 5func (d data) test(s string) { 6 d.Lock() 7 defer d.Unlock() 8 9 for i:=0;i<5 ;i++ {10 fmt.Println(s,i)11 time.Sleep(time.Second)12 }13}141516func main() {1718 var wg sync.WaitGroup19 wg.Add(2)20 var d data2122 go func() {23 defer wg.Done()24 d.test("read")25 }()2627 go func() {28 defer wg.Done()29 d.test("write")30 }()3132 wg.Wait()33}
答案以及解析会在下一篇文章中给出,鼓励大家在留言区留下答案,抱团学习,日拱一卒,每天进步一点!
ps:看完文章如果有收获,顺手花 1s 时间帮点下文末右下方的「在看」,感激!
所有学习上的成功,都只依靠两件事 -- 策略和坚持,而坚持本身就是最重要的策略!
推荐阅读:
转载地址:http://ewfnb.baihongyu.com/