每次学习并整理一个Golang的知识点,每天进步一点点。今天学习一个channel的知识点🤔,同时复习下前9问中提到过的知识点。

代码片段

1.(多选)关于channel,下面语法正确的是()

  • A. var ch chan int
  • B. ch := make(chan int)
  • C. <- ch
  • D. ch <-

2.下面这段代码的输出结果?

  • A.0
  • B.1
  • C.Compilation error
1
2
3
4
5
6
7
8
9
type person struct {  
    name string
}

func main() {  
    var m map[person]int
    p := person{"mike"}
    fmt.Println(m[p])
}

3.下面这段代码的输出结果?

  • A.18
  • B.5
  • C.Compilation error
1
2
3
4
5
6
7
8
9
func hello(num ...int) {  
    num[0] = 18
}

func main() {  
    i := []int{5, 6, 7}
    hello(i...)
    fmt.Println(i[0])
}

思考后看答案

思考后看下方答案…


答疑解惑

参考答案:

1. ABC
A、B都是声明 channel;C 读取 channel;写 channel 是必须带上值,所以 D 错误。

2. A
打印一个 map 中不存在的值时,返回元素类型的零值。这个例子中,m 的类型是 map[person]int,因为 m 中不存在 p,所以打印 int 类型的零值,即 0。

3. A
第3题如果做错了,可以回顾下:第七问slice与类型系统 这一期的知识点。其中需要注意,可变参数类型(…type)与数组切片元素打散(mySlice2…)的两种书写形式,区分记忆;

以上,你做对了吗?😊

其他相关答案或补充知识点,欢迎在评论区留言补充!

下期提问

1.下面这段代码的输出结果?

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
package main

import (  
    "fmt"
)

func main() {  
    a := [5]int{1, 2, 3, 4, 5}
    t := a[3:4:4]
    fmt.Println(t[0])
}
  • A.3
  • B.4
  • C.compilation error

2.下面这段代码的输出结果?

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
func main() {
	a := [3]int{7, 8, 9}
	b := [4]int{7, 8, 9}

	if a == b {
		fmt.Println("equal")
	} else {
		fmt.Println("not equal")
	}
}
  • A. compilation error
  • B. equal
  • C. not equal

答案及解析将在下期文章中给出,欢迎大家在评论区留言,独乐乐不如众乐乐,交流学习,互相进步。


欢迎转发和评论。更多优质原创文章,欢迎关注微信公众号“IYue爱月”或扫描下方二维码:

xujpxm_qrcode_gh