Golang 接口
在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
字段中。
评论已关闭