MST

星途 面试题库

面试题:Go语言中函数签名在接口设计里如何体现类型一致性

在Go语言中,假设你有一个接口 `Writer`,包含一个函数签名 `Write([]byte) (int, error)`。请编写一个结构体 `FileWriter`,并实现 `Writer` 接口,阐述函数签名在这个实现过程中是如何保证类型一致性的。
37.6万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
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 类型的值。