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) 可以接收 *AAfunc(*A) 只能接收 A,因为有些变量不可寻址(&获取地址)