golang 切片 接口_Go学习每日一问(12)-cap和空接口

每次学习并整理一个Golang的知识点,每天进步一点点。今天学习下cap和空接口的知识点。

代码片段

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
b9654d09a39a2f880932b094fbf5ab6c.png

要有自己的思考哦

思考后看下方答案…


答疑解惑

参考答案:

1. ABD go语言内置函数cap(),返回指定类型的容量;

  • len()可以用来查看数组或切片的长度,在数组中由于长度固定不可变,因此len()和cap()的值永远相同;
  • cap()可以用来查看数组或切片的容量;
  • cap()与channel搭配,返回channel缓冲区的容量;
  • cap()函数不能用于map;

2. A interface{}叫做空接口,空接口表示包含了0个方法的集合;

  • 由于任何类型都至少实现了0个方法,所以空接口可以承接任意类型。使用空接口传递任意类型数据是go语言的惯例用法;
  • 当声明了但没赋值的interface就是nil interface;但只要赋值了,即使赋了一个nil类型,也不再是nil interface了;
  • 当且仅当接口的动态值和动态类型都为 nil 时,接口类型值才为 nil。

3. B 删除map中不存在的key时,不报错;

  • 删除map中不存在的键值对时,不会报错,相当于没有任何作用;
  • 获取map中不存在的减值对时,返回值类型对应的零值,所以返回0;

以上,你做对了吗?

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

下期提问

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

func main() {      i := -5    j := +5    fmt.Printf("%+d %+d", i, j)}
  • A. -5 +5
  • B. +5 +5
  • C. 0 0

2.写出下面这段代码的输出结果?

type People struct{}func (p *People) ShowA() {    fmt.Println("showA")    p.ShowB()}func (p *People) ShowB() {    fmt.Println("showB")}type Teacher struct {    People}func (t *Teacher) ShowB() {    fmt.Println("teacher showB")}func main() {    t := Teacher{}    t.ShowB()}

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


欢迎转发和评论。更多优质原创文章,欢迎关注微信公众号“IYue爱月”。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值