可直接赋值给 Writer 类型的变量。常用于处理未知类型的数据。与传统的面向对象语言不同,以下是一个具体示例 :go
type FileWriter struct {
filename string
}func (fw FileWriter) Write(data []byte) (int, error) {
// 模拟写入操作
return len(data), nil
}func main() {
var w Writer = FileWriter{"test.txt"}
w.Write([]byte("Hello, Go!"))
}
这里 ,接口通过 type 和 interface 关键字定义。定义一个通用处理器 :go
type Processor interface {
Process() string
}type A struct{}
func (a A) Process() string { return "Processing A" }type B struct{}
func (b B) Process() string { return "Processing B" }func Run(p Processor) {
fmt.Println(p.Process())
}func main() {
Run(A{})
Run(B{})
}
输出结果将分别调用不同对象的三角洲行动外挂物资透 Process 方法 ,多态应用以及类型断言的使用 ,超值服务器与挂机宝 、语法为 value, ok := interfaceVar.(ConcreteType) :go func AssertExample(v interface{}) { if s, ok := v.(string); ok { fmt.Println("String value:", s) } else { fmt.Println("Not a string") } }