如何覆蓋匿名結(jié)構(gòu)函數(shù)。為了闡明我的意思,請(qǐng)查看以下代碼片段: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()}現(xiàn)在我將控制器結(jié)構(gòu)嵌入到測(cè)試結(jié)構(gòu)中,也稱為匿名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”。你可以看到上面的代碼,我重新實(shí)現(xiàn)了execute函數(shù),但它不起作用。
2 回答

婷婷同學(xué)_
TA貢獻(xiàn)1844條經(jīng)驗(yàn) 獲得超8個(gè)贊
由于Test
沒有ServeHTTP
方法,您的測(cè)試服務(wù)器使用Controller
's,它調(diào)用Controller.Execute()
. 如果你想讓它正常工作,定義ServeHTTP
為Test
類型。

富國(guó)滬深
TA貢獻(xiàn)1790條經(jīng)驗(yàn) 獲得超9個(gè)贊
type Test struct {
Controller
}
Controller沒有ServeHTTP方法但是*Controller有。所以
type Test struct {
*Controller
}
我認(rèn)為它會(huì)起作用。
- 2 回答
- 0 關(guān)注
- 230 瀏覽
添加回答
舉報(bào)
0/150
提交
取消