类型断言、方法集
题目:
如果 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每日一题/类型断言、方法集/