2 回答
TA贡献1812条经验 获得超5个赞
我猜这不是你想要的......
您的结构声明略有偏离,例如,a pointer to a slice of Post values您可能想要 Page has ,a slice of Post pointers因为这通常是人们使用切片的方式。您的声明只需要*类型旁边的 put,而不是[]然后您的创建代码将起作用。
import (
"html/template"
"time"
)
// Tmpl is exported and can be used by other packages
var Tmpl = template.Must(template.ParseGlob("../templates/*"))
type Page struct {
Title string
Content string
Posts []*Post
}
type Post struct {
Title string
Content string
DatePublished time.Time
Comments []*Comment
}
type Comment struct {
Author string
Comment string
DatePublished time.Time
}
TA贡献2036条经验 获得超8个赞
您将某些字段类型声明为pointers-to-slices,但您向它们提供了slice-of-pointers类型的值。
例如,给定字段Comments *[]Comment
,您可以像这样初始化它的值:
Comments: &[]Comment{},
请参阅此处了解更多替代方案:https://play.golang.org/p/l9HQEGxE5MP
同样在切片、数组和映射中,如果元素类型已知,即它不是接口,则可以在元素的初始化中省略类型,只使用花括号,因此代码如下:
[]*Post{&Post{ ... }, &Post{ ... }}
可以更改为:
[]*Post{{ ... }, { ... }}
- 2 回答
- 0 关注
- 118 浏览
添加回答
举报