每次学习并整理一个Golang的知识点,每天进步一点点。今天学习一个nil切片的知识点🤔

日省吾身

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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
func main() {
	var l1 []int
	var l2 = []int{}
	switch {
	case l1 == nil:
		fmt.Println("l1 is nil")
	case l2 == nil:
		fmt.Println("l2 is nil")
	}
}
  • A. l1 is nil
  • B. l2 is nil
  • C. compilation error

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

1
2
3
4
func main() {
	n := 66
	fmt.Println(string(n))
}
  • A. B
  • B. 66
  • C. compilation error

思考后看答案

思考后看下方答案…


答疑解惑

参考答案:

1. A 知识点:nil 切片和空切片

  • nil 切片一般用来表示一个不存在的切片, nil 切片和 nil 相等;
  • 空切片表示一个空的集合,和 nil 不相等;[]int{}直接创建并初始化包含0个元素的切片,切片元素为零个,不代表该切片不存在;

比如在一个瓶子中,nil代表瓶子是真空的,什么也没有;而空切片好比瓶子里装满了空气,虽然瓶子看上去也是空的,但区别很大。(比喻可能不当,如果你有更好的记忆方法,欢迎在下方留言)

2. A 输出结果为:B

UTF-8编码中,十进制66对应的ASCII码是:B

以上,你做对了吗?😊

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

下期提问

1.下面代码的输出结果?()

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
func increment(p *int) int {
	*p++
	return *p
}

func main() {
	n := 1
	increment(&n)
	fmt.Println(n)
}
  • A. 1
  • B. 2
  • C. 3

2.对add()函数调用正确的是?()

1
2
3
4
5
6
7
8
func add(args ...int) int {

    sum := 0
    for _, arg := range args {
        sum += arg
    }
    return sum
}
  • A. add(1, 2)
  • B. add(1, 3, 7)
  • C. add([]int{1, 2})
  • D. add([]int{1, 3, 7}…)

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


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

xujpxm_qrcode_gh