您的位置 首页 golang

Go学习每日一问(15)-nil切片

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

日省吾身

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

 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.下面代码的输出结果是?

 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.下面代码的输出结果?()

 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()函数调用正确的是?()

 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爱月”。

文章来源:智云一二三科技

文章标题:Go学习每日一问(15)-nil切片

文章地址:https://www.zhihuclub.com/98854.shtml

关于作者: 智云科技

热门文章

网站地图