MST

星途 面试题库

面试题:Go函数签名与接口实现

假设有一个接口定义如下:type Printer interface { Print(data string) } 。请编写一个结构体及该结构体的方法,其方法的函数签名要满足Printer接口。并且说明在Go语言中,函数签名对于接口实现的重要性,以及接口方法的函数签名有哪些严格要求。
34.9万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
package main

import "fmt"

// 定义一个结构体
type MyPrinter struct{}

// 实现Printer接口的Print方法
func (mp MyPrinter) Print(data string) {
    fmt.Println(data)
}

在Go语言中,函数签名对于接口实现至关重要。只有当一个类型的方法的函数签名与接口中定义的方法完全匹配时,该类型才被视为实现了此接口。

接口方法的函数签名有以下严格要求:

  • 方法名:必须与接口中定义的方法名一致。例如上述代码中MyPrinter结构体的Print方法名与Printer接口中的Print方法名一致。
  • 参数列表:参数的数量、顺序和类型都必须与接口定义完全相同。如Print方法接受一个string类型的参数,实现时参数也必须是string类型且数量为1个。
  • 返回值列表:返回值的数量、顺序和类型同样要与接口定义严格匹配。若接口方法无返回值,实现的方法也不能有返回值,像上述Print方法无返回值,实现时也无返回值。

这种基于函数签名匹配来确定接口实现的机制,使得Go语言的接口实现非常灵活,不需要显式声明实现了哪个接口,只要方法签名匹配即可。