我遇到了一个独特的问题。为了学习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
}

注释在哪里
type Comment struct {
    TweetID         int64
    ParentCommentID int64
    CommentID       int64
    CreatedAt     time.Time
    Name          string
    UserID        int64
    CommentMsg string
}

这可行。但是如果我用comment.CommentView ..模板更改tweetView中的简历,则停止显示TweetView。

comment.CommentView是

输入CommentView struct {
评论
CC []评论
}

新的TweetView将被定义为
type TweetView struct {
        Tweet
        CV       []comments.CommentView
    }

尝试进行数据存储区查询以将tweet对象提取到Tweetview时遇到此错误
err := datastore.Get(ctx, tweetKey, &tweetView[v])

数据存储区:展平嵌套结构会导致一片slices:field
“简历”,

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

最佳答案

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

当我跑步时它给出了以下错误

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

数据存储区:展平嵌套结构会导致一片slices:field
“简历”,

所以我改变了这样的查询
var tweetTemp Tweet
datastore.Get(ctx, tweetKey, &tweetTemp)
tweetSlice[v].Tweet = tweetTemp

如果您发现此方法有问题,请告诉我

10-08 09:43