gpt4 book ai didi

pointers - 指向结构满足接口(interface)的指针

转载 作者:IT王子 更新时间:2023-10-29 00:56:42 26 4
gpt4 key购买 nike

我扫了下Revel框架的Go代码,好像指针是满足接口(interface)要求的。请参阅下面的片段。

type Result interface {
Apply(req *Request, resp *Response)
}

type RenderTextResult struct {
text string
}

func (r RenderTextResult) Apply(req *Request, resp *Response) {
resp.WriteHeader(http.StatusOK, "text/plain; charset=utf-8")
resp.Out.Write([]byte(r.text))
}

func (c *Controller) RenderText(text string, objs ...interface{}) Result {
finalText := text
if len(objs) > 0 {
finalText = fmt.Sprintf(text, objs...)
}
return &RenderTextResult{finalText}
}

这背后的原因是什么?不过,该框架返回一个结构值而不是结构指针来呈现 JSON:

type RenderJsonResult struct {
obj interface{}
callback string
}

// Uses encoding/xml.Marshal to return XML to the client.
func (c *Controller) RenderXml(o interface{}) Result {
return RenderXmlResult{o}
}

我似乎无法理解细微的(?)差异。

最佳答案

是的,指针隐含地拥有它们指向的类型的所有方法。请参阅常见问题解答部分 "Why do T and *T have different method sets?""Methods on values or pointers?"

关于pointers - 指向结构满足接口(interface)的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20557673/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com