package
0.0.0-20240429050328-3be44a187b12
Repository: https://github.com/robertwang/golang_study.git
Documentation: pkg.go.dev

# README

Go 每日一题

今日(2023-04-07)的题目如下

下面这段代码输出什么?为什么?

type People interface {
	Speak(string) string
}

type Student struct{}

func (stu *Student) Speak(think string) (talk string) {
	if think == "speak" {
		talk = "speak"
	} else {
		talk = "hi"
	}
	return
}

func main() {
	var peo People = Student{}
	think := "speak"
	fmt.Println(peo.Speak(think))
}
  • A. speak
  • B. compilation error
🔑 答案解析:

参考答案及解析:B。

编译错误 Student does not implement People (Speak method has pointer receiver),值类型 Student 没有实现接口的 Speak() 方法,而是指针类型 *Student 实现改方法。

详细请参考这篇文章 https://seekload.net/2019/06/06/go-study-method.html


6 楼

结构体和结构体指针,不同点:实现接口的方法上会有区别。绑定在谁身上有区别