我们的 《每天一篇》系列昨天被 Go语言中文网 的《 Go语言爱好者周刊》第 6 期 收录了,现在还有点小激动呢!现在来答题的小伙伴越来越多,一种好现象,加油!还没开始的同学赶快加入他们吧,相信坚持就一定能有收获!
从昨天的回答留言来看,第 3 题是容易掉坑的,看下解析:
1.参考答案及解析:C。a 的类型是 int,b 的类型是 float,两个不同类型的数值不能相加,编译报错。
2.参考答案及解析:B。知识点:操作符 [i,j]。基于数组(切片)可以使用操作符 [i,j] 创建新的切片,从索引 i,到索引 j 结束,截取已有数组(切片)的任意部分,返回新的切片,新切片的值包含原数组(切片)的 i 索引的值,但是不包含 j 索引的值。i、j 都是可选的,i 如果省略,默认是 0,j 如果省略,默认是原数组(切片)的长度。i、j 都不能超过这个长度值。
假如底层数组的大小为 k,截取之后获得的切片的长度和容量的计算方法:长度:j-i,容量:k-i。
截取操作符还可以有第三个参数,形如 [i,j,k],第三个参数 k 用来限制新切片的容量,但不能超过原数组(切片)的底层数组大小。截取获得的切片的长度和容量分别是:j-i、k-i。
所以例子中,切片 t 为 [4],长度和容量都是 1。
详细的知识点可以看下关于切片的文章。
3.参考答案及解析:A。Go 中的数组是值类型,可比较,另外一方面,数组的长度也是数组类型的组成部分,所以 a 和 b 是不同的类型,是不能比较的,所以编译错误。
欢迎在留言区补充!
看下今天的题目:
- A. array
- B. slice
- C. map
- D. channel
2.下面这段代码输出什么?
func main() {
var i interface{}
if i == nil {
fmt.Println("nil")
return
}
fmt.Println("not nil")
}
- A. nil
- B. not nil
- C. compilation error
3.下面这段代码输出什么?
- A. runtime panic
- B. 0
- C. compilation error
答案以及解析会在下一篇文章中给出,鼓励大家在留言区留下答案,抱团学习,日拱一卒,每天进步一点!