首页 > 试题广场 >

关于Go接口的实现,以下说法正确的是?

[单选题]
关于Go接口的实现,以下说法正确的是?
  • 若类型T的指针接收者实现了接口I,则T类型的值可以赋值给I类型变量
  • 若类型T的值接收者实现了接口I,则*T类型的指针可以赋值给I类型变量
  • 空接口interface{}无法存储nil值
  • 接口变量的类型断言失败时,一定会触发panic
难点:普通方法调用、接口实现、接口赋值。

普通方法调用:对于一个可寻址的变量x,无论方法接收者是值类型(T)还是指针类型(*T),都可以直接调用x.Method()。允许编译器自动进行双向转换(取地址和解引用)。

接口实现:在编译事情的静态检查,严格的基于”方法集“机制。T的方法集,只包含所有值接收者声明的方法;*T的方法集,包含所有值接收者指针接收者声明的方法。

接口赋值:赋值是否成功,完全取决于右侧值的“类型”的方法集,是否完整包含了接口所要求的所有方法
编辑于 今天 10:47:16 回复(0)