2 回答

TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊
我猜這不是你想要的......
您的結(jié)構(gòu)聲明略有偏離,例如,a pointer to a slice of Post values您可能想要 Page has ,a slice of Post pointers因?yàn)檫@通常是人們使用切片的方式。您的聲明只需要*類型旁邊的 put,而不是[]然后您的創(chuàng)建代碼將起作用。
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貢獻(xiàn)2036條經(jīng)驗(yàn) 獲得超8個(gè)贊
您將某些字段類型聲明為pointers-to-slices,但您向它們提供了slice-of-pointers類型的值。
例如,給定字段Comments *[]Comment
,您可以像這樣初始化它的值:
Comments: &[]Comment{},
請(qǐng)參閱此處了解更多替代方案:https://play.golang.org/p/l9HQEGxE5MP
同樣在切片、數(shù)組和映射中,如果元素類型已知,即它不是接口,則可以在元素的初始化中省略類型,只使用花括號(hào),因此代碼如下:
[]*Post{&Post{ ... }, &Post{ ... }}
可以更改為:
[]*Post{{ ... }, { ... }}
- 2 回答
- 0 關(guān)注
- 157 瀏覽
添加回答
舉報(bào)