我有一个非常简单的代码,如下所示:
package chain_of_responsibility
import (
"fmt"
"reflect"
)
type CustomerBalanceRequest struct{
CustomerName string
Balance int
}
type BalanceRequest interface {
Handle(request CustomerBalanceRequest)
}
type HeadEditor struct{
Next BalanceRequest
}
func (h *HeadEditor) Handle(b CustomerBalanceRequest){
if b.Balance < 1000 {
fmt.Printf("%T approved balance for %v request. Balance: %v\n", h, b.CustomerName, b.Balance)
fmt.Printf("%v approved balance for %v request. Balance: %v\n", reflect.TypeOf(h), b.CustomerName, b.Balance)
fmt.Printf("%v approved balance for %v request. Balance: %v\n", reflect.TypeOf(h).String(), b.CustomerName, b.Balance)
fmt.Printf("%v approved balance for %v request. Balance: %v\n", reflect.TypeOf(h).Name(), b.CustomerName, b.Balance)
} else{
h.Next.Handle(b)
}
}
在 fmt.Printf 行上,我想打印 HeadEditor 类型的名称。我使用各种方法来实现这一点,这就是我的结果:
*chain_of_responsibility.HeadEditor approved balance for John request. Balance: 500
*chain_of_responsibility.HeadEditor approved balance for John request. Balance: 500
*chain_of_responsibility.HeadEditor approved balance for John request. Balance: 500
approved balance for John request. Balance: 500
问题是在前 3 个 Printf 调用中,我可以获得类型的名称,但它们包括指针和包名称。有什么方法可以让我只获得没有包名称和指针的“HeadEditor”,当然除了字符串处理解决方案(例如从结果中删除 * 和包名称)。
开满天机
相关分类