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 關注
- 159 瀏覽
添加回答
舉報