为了账号安全,请及时绑定邮箱和手机立即绑定

覆盖匿名结构函数

覆盖匿名结构函数

Go
九州编程 2021-08-30 14:54:44
如何覆盖匿名结构函数。为了阐明我的意思,请查看以下代码片段:package baseimport (    "fmt"    "net/http")type Executer interface {    Execute()}type Controller struct { }func (self *Controller) Execute() {    fmt.Println("Hello Controller")}func (self *Controller) ServeHTTP(rw http.ResponseWriter, r *http.Request) {    self.Execute()}现在我将控制器结构嵌入到测试结构中,也称为匿名package baseimport (    "fmt"    "net/http"    "net/http/httptest"    "testing")type Test struct {    Controller}func (self *Test) Execute() {    fmt.Println("Hello Test")}func TestInheritance(t *testing.T) {    ts := httptest.NewServer(&Test{})    defer ts.Close()    http.Get(ts.URL)}作为输出,我有“Hello Controller”,但期望“Hello Test”。你可以看到上面的代码,我重新实现了execute函数,但它不起作用。
查看完整描述

2 回答

?
婷婷同学_

TA贡献1844条经验 获得超8个赞

由于Test没有ServeHTTP方法,您的测试服务器使用Controller's,它调用Controller.Execute(). 如果你想让它正常工作,定义ServeHTTPTest类型。


查看完整回答
反对 回复 2021-08-30
?
富国沪深

TA贡献1790条经验 获得超9个赞

type Test struct {

    Controller

}

Controller没有ServeHTTP方法但是*Controller有。所以


type Test struct {

    *Controller

}

我认为它会起作用。



查看完整回答
反对 回复 2021-08-30
  • 2 回答
  • 0 关注
  • 203 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信