package main
import (
"fmt"
)
// 定义插件接口
type Plugin interface {
Execute(args interface{}) (float64, error)
}
// Adder插件
type Adder struct{}
func (a Adder) Execute(args interface{}) (float64, error) {
arg, ok := args.([]float64)
if!ok || len(arg) != 2 {
return 0, fmt.Errorf("参数类型错误或参数个数不正确")
}
return arg[0] + arg[1], nil
}
// Multiplier插件
type Multiplier struct{}
func (m Multiplier) Execute(args interface{}) (float64, error) {
arg, ok := args.([]float64)
if!ok || len(arg) != 2 {
return 0, fmt.Errorf("参数类型错误或参数个数不正确")
}
return arg[0] * arg[1], nil
}
func main() {
// 使用Adder插件
adder := Adder{}
result, err := adder.Execute([]float64{2.0, 3.0})
if err != nil {
fmt.Println("执行Adder插件错误:", err)
} else {
fmt.Println("Adder插件执行结果:", result)
}
// 使用Multiplier插件
multiplier := Multiplier{}
result, err = multiplier.Execute([]float64{2.0, 3.0})
if err != nil {
fmt.Println("执行Multiplier插件错误:", err)
} else {
fmt.Println("Multiplier插件执行结果:", result)
}
}