类型断言、方法集
题目:
如果 Add() 函数的调用代码为:
1 |
|
则Add函数定义正确的是:
1 |
|
答案解析:
AC。
当涉及到方法调用时,Go 语言对于接收者的类型转换会有两种情况:
- 非指针类型的接收者调用方法:
- 如果方法的接收者类型是指针类型
*T
,而你使用非指针类型的变量v
调用该方法,则编译器会自动将v
转换为*T
类型的指针,并调用相应的方法。 - 示例:
user.GetName()
,其中GetName()
的接收者类型是*Student
,但你可以使用Student
类型的变量user
进行调用。
- 如果方法的接收者类型是指针类型
- 指针类型的接收者调用方法:
- 如果方法的接收者类型是非指针类型
T
,而你使用指针类型的变量p
调用该方法,则编译器会自动将p
解引用为*T
类型,并调用相应的方法。 - 示例:
user.GetId()
,其中GetId()
的接收者类型是Student
,但你可以使用*Student
类型的指针变量user
进行调用。
- 如果方法的接收者类型是非指针类型
类型断言、方法集
http://example.com/2023/08/18/Go每日一题/类型断言、方法集/