全部学科
Python全栈
python
NodeJS全栈
nodejs
📝 1 篇文章 20 道配套习题

GO方法与接口专题

专题说明

本专题系统讲解Go语言方法与接口的核心概念,帮助初学者理解方法的定义方式、接收者类型选择、接口的隐式实现机制、类型断言与多态实现等关键知识点。

学习目标

  1. 掌握方法的定义语法与接收者类型选择
  2. 理解值接收者与指针接收者的区别与适用场景
  3. 掌握接口的定义、实现与嵌套组合
  4. 学会类型断言与类型选择的使用方法
  5. 理解Go多态的实现机制与接口值结构

学习内容

  • 方法定义:语法格式、接收者、方法与函数区别
  • 接收者类型:值接收者、指针接收者、选择原则
  • 接口实现:隐式实现、接口定义、空接口any
  • 接口组合:接口嵌套、小接口原则、标准库示例
  • 类型断言:安全断言、不安全断言、类型选择
  • 多态机制:接口多态、方法集规则、接口值结构

学习建议

  1. 重点理解Go的隐式接口实现机制,这是Go的核心特性
  2. 掌握值接收者与指针接收者的方法集规则
  3. 注意nil接口与nil指针的区别,避免常见错误
  4. 理解Go通过接口实现多态,而非继承
  5. 实践中使用安全断言,避免panic

📝 配套习题(19 题)

💡 参考答案在文末
判断题
1

如果类型使用指针接收者实现接口,那么该类型的值实例可以赋值给接口变量。

A

B

2

Go语言中,方法必须绑定到命名类型(如struct、自定义类型),不能绑定到基本类型(如int)。

A

B

3

Go中接口的方法集决定了类型是否满足该接口,类型的方法集必须包含接口的所有方法。

A

B

4

Go语言中,类型实现接口不需要显式声明implements,只要实现了接口定义的所有方法即可。

A

B

5

Go的类型切换(type switch)中,case分支的变量v是该分支对应的类型,不是接口类型。

A

B

6

Go 1.18引入的any关键字是interface{}的别名,两者完全等价。

A

B

单选题
7

Go中进行类型断言的语法是?

A

val = i as Type

B

val, ok := i.(Type)

C

val = cast(i, Type)

D

val = i.cast(Type)

8

Go中值接收者方法和指针接收者方法的主要区别是?

A

值接收者可以修改结构体字段

B

指针接收者可以修改结构体字段

C

值接收者性能更好

D

指针接收者必须用指针调用

9

Go语言中定义方法的语法是?

A

func ClassName.methodName()

B

func (receiver Type) methodName()

C

method Type.methodName()

D

def Type.methodName()

10

Go中的空接口interface{}(Go 1.18+可写作any)有什么特点?

A

不能存储任何值

B

只能存储指针类型

C

可以存储任意类型的值

D

必须显式实现才能使用

11

Go中接口嵌套(组合)的主要目的是?

A

实现接口继承

B

组合多个小接口形成更大的接口

C

覆盖已有接口方法

D

增加接口的方法实现

12

Go中类型的方法集(method set)是指?

A

类型所有字段

B

类型可调用的所有方法集合

C

类型实现的接口

D

类型的构造函数

13

Go语言中定义接口使用什么关键字?

A

class

B

interface

C

abstract

D

protocol

14

Go语言实现多态的主要方式是?

A

类继承

B

接口

C

函数重载

D

模板

多选题
15

关于Go方法集与接口实现,以下哪些说法正确?

A

值类型T的方法集包含所有值接收者方法

B

指针类型*T的方法集包含值接收者和指针接收者方法

C

值接收者方法实现接口时,T和*T都能赋值给接口

D

指针接收者方法实现接口时,只有*T能赋值给接口

E

接口的方法集是接口定义的所有方法

填空题
16

Go接口通过 ____________ 其他接口实现组合,组合接口包含 ____________ 嵌入接口的方法。实现组合接口必须 ____________ 所有方法。io.ReadWriter组合了 io.Reader 和 io.Writer,实现者需同时实现 Read 和 Write 方法。

17

Go方法集规则:值类型 ____________ 的方法集包含所有 ____________ 方法;指针类型 ____________ 的方法集包含 值接收者 和 指针接收者 方法。因此指针类型 总是 包含更多的方法。接口要求类型方法集 包含 接口定义的所有方法。

18

Go接口值由 ________________________ 两部分组成,只有 ____________ 都为 nil 时接口才是nil接口。将nil指针赋给接口时, 类型 部分不为nil,导致接口 != nil。正确返回nil接口应 直接 返回nil。

19

Go类型断言有两种形式: ____________ 语法 ____________ 返回值和bool; ____________ 语法 val := i.(Type) 失败时 panic。推荐使用 安全断言 防止程序崩溃。

参考答案
1.错误 2.正确 3.正确 4.正确 5.正确 6.正确 7.B 8.B 9.B 10.C 11.B 12.B 13.B 14.B 15.A;B;C;D;E 16.嵌入;所有;实现 17.T;值接收者;*T 18.类型;值;两者 19.安全断言;val, ok := i.(Type);不安全断言
想在手机上练习这套专题?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码
← 上一个专题 GO接口设计与最佳实践专题
下一个专题 → GO标准库专题
扫码体验小程序
加载中
想在手机上刷题学习?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码