package
0.0.0-20240429050328-3be44a187b12
Repository: https://github.com/robertwang/golang_study.git
Documentation: pkg.go.dev
# README
Go每日一题
今日(2023-01-07) 的题目如下
如果 Add() 函数的调用代码为:
func main() {
var a Integer = 1
var b Integer = 2
var i interface{} = &a
sum := i.(*Integer).Add(b)
fmt.Println(sum)
}
则Add函数定义正确的是:
A.
type Integer int
func (a Integer) Add(b Integer) Integer {
return a + b
}
B.
type Integer int
func (a Integer) Add(b *Integer) Integer {
return a + *b
}
C.
type Integer int
func (a *Integer) Add(b Integer) Integer {
return *a + b
}
D.
type Integer int
func (a *Integer) Add(b *Integer) Integer {
return *a + *b
}
🔑 答案解析:
参考答案及解析:AC。
知识点:类型断言、方法集。
go 中有些的变量不可以寻址,指的是不能通过&获得其地址。
所以
func(*A)
只能接收*A
,func(A)
可以接收A
或者*A
,通过指针一定能得到变量的值*A
->A
func(A)
可以接收*A
和A
,func(*A)
只能接收A
,因为有些变量不可寻址(&获取地址)