每次学习并整理一个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爱月”。