2 回答
TA贡献2021条经验 获得超8个赞
您还没有分配 Response 对象,只是分配了指针。指针初始化为零。
你可以说greets[0] := &Response{Message: "hello"}。或者,也许更好,从一个空切片和append任意数量的*Responses开始:
greets := []*Response{} // or ResponseList{}
greets = append(greets, &Response{Message: "hello"})
greets = append(greets, &Response{Message: "goodbye"})
编辑:注意匿名者的替代方案:如果您知道Responses的数量,则可以使用文字来设置整个结构,如resp.Items = {{Message: "hello"}}. 即使 Response 是一个指针也可以工作,并且在每个Response. 很酷。
TA贡献1824条经验 获得超5个赞
Go 中对 slice 和 struct 文字的支持可以帮助您避免样板并让您的代码正确。
以下是List使用切片文字编写方法的方法。
func (gs *GreetingService) List(r *http.Request, req *Request, resp *ResponseList) error {
resp.Items = []*Response{
{Message: "hello"},
{Message: "goodbye"},
}
return nil
}
- 2 回答
- 0 关注
- 227 浏览
添加回答
举报