golang不支持结构切片深度与模板

时间:2016-11-27 06:56:39

标签: go go-templates

我遇到了一个独特的问题。为了学习golang,我创建了一个Twitter类型的网站。它有推文,每条推文都有评论,每条评论都可以有子评论。

在homepage.html中显示struct pd

Env.Tpl.ExecuteTemplate(w, "homePage.html", pd)

其中pd是pagedata(为简单起见,我删除了额外的信息)

type PageData struct {
    TweetView    []tweets.TweetView
 }

tweet.TweetView在哪里

type TweetView struct {
    Tweet
    CV       []comments.Comment
}

其中comments.Comment是

type Comment struct {
    TweetID         int64
    ParentCommentID int64
    CommentID       int64
    CreatedAt     time.Time
    Name          string
    UserID        int64
    CommentMsg string
}

这很有效。但如果我用tweetView更改了CV,请注释.commentView ..模板停止显示TweetView。

comment.CommentView是

type CommentView struct {     评论     CC []评论 }

新的TweetView将被定义为

type TweetView struct {
        Tweet
        CV       []comments.CommentView
    }

在尝试进行数据存储区查询以将tweet对象提取到Tweetview

时出现此错误
err := datastore.Get(ctx, tweetKey, &tweetView[v])
  

数据存储区:展平嵌套结构导致切片:字段   " CV",

我认为这是golang的限制。我该怎么办?

1 个答案:

答案 0 :(得分:0)

我能够解决问题。问题出在datastore.Get查询。

我跑步时发出以下错误

err := datastore.Get(ctx, tweetKey, &tweetView[v])
  

数据存储区:展平嵌套结构导致切片:字段   " CV",

所以我改变了这样的查询

var tweetTemp Tweet
datastore.Get(ctx, tweetKey, &tweetTemp)
tweetSlice[v].Tweet = tweetTemp

如果您发现此方法存在问题,请与我们联系