面试题答案
一键面试package main
import (
"fmt"
)
// Writer接口定义
type Writer interface {
Write([]byte) (int, error)
}
// FileWriter结构体
type FileWriter struct {
// 假设这里可以包含文件相关的字段,如文件路径等
filePath string
}
// FileWriter实现Writer接口的Write方法
func (fw FileWriter) Write(data []byte) (int, error) {
// 这里简单模拟写入文件操作,实际中可以使用os包进行文件写入
fmt.Printf("Writing data: %s to file %s\n", data, fw.filePath)
return len(data), nil
}
在Go语言中,接口的实现并不需要显式声明实现了某个接口,只要结构体的方法集与接口的方法集完全一致,就认为该结构体实现了此接口。在 FileWriter
实现 Writer
接口的过程中,FileWriter
结构体定义了 Write([]byte) (int, error)
方法,其方法签名与 Writer
接口中的 Write
方法签名完全一致,这就保证了类型一致性,使得 FileWriter
类型的值可以赋值给 Writer
类型的变量,并且在使用 Writer
接口的地方可以传入 FileWriter
类型的值。