Я получил интерфейс с более чем одним методом. Интересно, как написать промежуточное программное обеспечение для него.
Я ищу в Google, но нашел все ответы для интерфейса только с одним методом. Я не нашел ничего для своей проблемы. И я пытаюсь написать демо, но это не работает.
package main
import (
"fmt"
"strconv"
)
type ti interface {
Say(int) string
Eat(string) int
}
type Middleware func(ti) ti
func GetMiddleWare(t ti) ti {
var tm ti
t.Say = func(i int) string {
fmt.Println("arg is " + strconv.Itoa(i))
var ret string
defer func() {
fmt.Println("ret is " + ret)
}()
ret = t.Say(i)
return ret
}
t.Eat = func(s string) int {
fmt.Println("arg is " + s)
var ret int
defer func() {
fmt.Println("ret is " + strconv.Itoa(ret))
}()
ret = t.Eat(s)
return ret
}
return tm
}
не работает
.\main.go:17:8: cannot assign to t.Say
.\main.go:26:8: cannot assign to t.Eat
Итак, как мне написать промежуточное программное обеспечение для интерфейса с более чем одним методом?