首页 > 试题广场 >

如果Add函数的调用代码为:

[单选题]
如果Add函数的调用代码为:


  • A
  • B
  • C
  • D
Add函数带入的是b而不是*b,所以只能在AC中选,但是i.(Integer)经过类型断言以后就是Integer类型了,无法自动转成*Integer,所以只能选A了
发表于 2018-04-13 11:30:49 回复(2)
更多回答
函数的参数是Integer类型,所以BD排除,而i调用的是integer的方法,所以C排除。如果将题目改成sum := a.Add(b)则可以选AC。
发表于 2018-01-25 21:30:00 回复(0)
类型断言之后,如果成功,那么对象的类型就为断言类型。如这里的integer.
发表于 2019-07-24 13:06:39 回复(0)
主要区分A与C,BD还不明白的话,建议回去复习C语言的函数章节。C的写法其实没有错,但是要注意一点,在C中,方法的调用对象是指针,虽然golang能够自动帮你实现调用对象指针与对象的隐性转换,但对于方法调用对象是指针的情况,有一个例外,即调用时,对象不能是临时变量,而C断言后的对象就是一个临时对象。
要用C,main中正确的写法是
d := i.(Integer)
sum :=d.Add(b)
这样d就不再是一个临时变量,你用C取定义Add方法,也不会有什么问题
发表于 2024-03-08 17:00:41 回复(0)
i.(Integer)的类型是Integer,Integer和*Integer是两个不同的类型
发表于 2018-01-17 19:11:30 回复(0)
类型断言成功后,就是断言类型
发表于 2021-03-22 19:32:19 回复(0)

楼上说的对


发表于 2020-02-11 04:09:39 回复(0)
i.(integer)将i接口变量转换为integer并返回转换后的变量值。
发表于 2023-04-26 15:15:06 回复(0)
参数不是指针,所以入参不是指针类型,断言使用的是Inter所以不是指针
发表于 2021-04-15 10:42:50 回复(0)