go截取数组_一起攻克面试难关:Go 面试每天一篇(第 11 天)

点击上方蓝色“Go语言中文网”关注我们,设个星标,每天学习 Go 语言

从昨天的回答留言来看,第 3 题是容易掉坑的,题目:

1ff9e2e317074d01869ee04e06e7704f.png

bcaf0a2aee027dbfd37ed4e42a8413cf.png

看下解析:

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 是不同的类型,是不能比较的,所以编译错误。

欢迎在留言区补充!

看下今天的题目:
1.关于 cap() 函数的适用类型,下面说法正确的是()

  • 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.下面这段代码输出什么?

func main() {  
    s := make(map[string]int)
    delete(s, "h")
    fmt.Println(s["h"])
}
  • A. runtime panic

  • B. 0

  • C. compilation error 

答案以及解析会在下一篇文章中给出,鼓励大家在留言区留下答案,抱团学习,日拱一卒,每天进步一点!

ps:看完文章如果有收获,顺手花 1s 时间帮点下文末右下方的「在看」,感激!

所有学习上的成功,都只依靠两件事 -- 策略和坚持,而坚持本身就是最重要的策略!

推荐阅读:

  • 一起攻克面试难关:Go 面试每天一篇(第 10 天)

  • 一起攻克面试难关:Go 面试每天一篇(第 9 天)

如果我的文章对你有所帮助,点赞、转发都是一种支持!

3c70788c5dd912c9e034ff3f3b15df9f.gif

1fb9b2b61238545e2b38100c13f2d5f3.png

给个[在看],是对我最大的支持
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值