package main
 
import (
    "fmt"
)
 
// 定义一个操作者接口
type Operator interface {
    Operate(int, int) int
}
 
// 加法操作者
type Adder struct{}
 
// 实现 Operator 接口
func (a Adder) Operate(x, y int) int {
    return x + y
}
 
// 减法操作者
type Subtractor struct{}
 
// 实现 Operator 接口
func (s Subtractor) Operate(x, y int) int {
    return x - y
}
 
// 使用操作者模式的函数
func ApplyOperation(x, y int, op Operator) int {
    return op.Operate(x, y)
}
 
func main() {
    adder := Adder{}
    subtractor := Subtractor{}
 
    sum := ApplyOperation(5, 3, adder)
    difference := ApplyOperation(5, 3, subtractor)
 
    fmt.Printf("Sum: %d\n", sum)
    fmt.Printf("Difference: %d\n", difference)
}这段代码定义了一个操作者接口Operator和两个结构体Adder和Subtractor,分别实现了这个接口。然后定义了一个函数ApplyOperation,它接受一个操作者实例作为参数,并使用该操作者来执行操作。最后在main函数中,我们创建了Adder和Subtractor的实例,并使用它们来计算了两个数的和与差,并打印结果。这展示了如何在Go语言中使用操作者模式来实现不同的操作。