Golang 接口
warning:
这篇文章距离上次修改已过419天,其中的内容可能已经有所变动。
在Golang中,接口(Interface)是一种类型,它定义了一组方法,但不包括这些方法的具体实现。任何类型,只要它满足了这些方法的签名要求,都可以实现这个接口。
接口的定义使用关键字 interface,它可以包含一个或多个方法。例如,定义一个 Writer 接口,它包含一个 Write(p []byte) (n int, err error) 方法:
package io
type Writer interface {
Write(p []byte) (n int, err error)
}任何拥有 Write 方法的类型都可以实现这个 Writer 接口。例如,定义一个 StringWriter 类型,它实现了 Write 方法:
package main
import (
"fmt"
"io"
)
type StringWriter struct {
data string
}
func (sw *StringWriter) Write(p []byte) (n int, err error) {
sw.data += string(p)
return len(p), nil
}
func main() {
var w io.Writer
w = &StringWriter{}
n, err := w.Write([]byte("Hello, World!"))
if err != nil {
fmt.Println("Error writing:", err)
} else {
fmt.Printf("Wrote %d bytes\n", n)
}
// 输出: Wrote 14 bytes
}在这个例子中,StringWriter 类型实现了 io.Writer 接口的 Write 方法,因此它可以被当作 io.Writer 类型使用。在 main 函数中,我们创建了一个 StringWriter 的实例,并将其赋值给 io.Writer 接口变量 w。然后我们调用 w.Write 方法,它将字节片段添加到 StringWriter 实例的 data 字段中。
评论已关闭