Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 使用std为多对多关系建模结构_Mysql_Go_Many To Many - Fatal编程技术网

Mysql 使用std为多对多关系建模结构

Mysql 使用std为多对多关系建模结构,mysql,go,many-to-many,Mysql,Go,Many To Many,我正在努力学习围棋,我想在帖子和标签之间建立一种多对多的关系。一个标签可以属于许多帖子,而一篇帖子可以有许多标签。我使用的是使用mysql驱动器的标准库(github.com/go-sql-driver/mysql) 这是我的密码: 邮政局 package main type post struct { ID int `json:"id"` Title string `json:"title"` Content string `json:"content"`

我正在努力学习围棋,我想在帖子和标签之间建立一种多对多的关系。一个标签可以属于许多帖子,而一篇帖子可以有许多标签。我使用的是使用mysql驱动器的标准库(github.com/go-sql-driver/mysql)

这是我的密码:

邮政局

package main

type post struct {
    ID   int    `json:"id"`
    Title string `json:"title"`
    Content string `json:"content"`
    Tags: Tag `json:"tags"`
}
加油

package main

type tag struct {
    ID   int    `json:"id"`
    Name string `json:"name"`
    Posts: Post `json:"posts"`
}
这是构建这种多对多关系的正确方法吗


干杯

以下是一些需要考虑的修改:

  • 保持您的类型名称一致(
    post
    vs.
    post
  • 我想你想要一片标签和一片帖子,所以我更新了语法
  • 一个你需要回答的重要问题;您是否需要/希望您的结构存储在内存中,每个项目都有一个结构?如果是这样,您可能会考虑使用指针切片来标记和发布(例如,代码> []*POST 和<代码> []*TAG< <代码> >,但是流行的ORM库并不严格需要(例如GOM:)。
  • 示例代码:

    type Post struct {
        ID   int    `json:"id"`
        Title string `json:"title"`
        Content string `json:"content"`
        Tags []Tag `json:"tags"`
    }
    
    type Tag struct {
        ID   int    `json:"id"`
        Name string `json:"name"`
        Posts []Post `json:"posts"`
    }
    

    这段代码不会编译——我认为它更像是“伪代码”,是的,它是伪代码。我正在计划我的实现。使用指针的好处是我可以更新指针上的值,否则使用
    Tag
    Post
    将是只读的。对吗?我本来打算使用gorm,但通过在线阅读,我得到的普遍共识是,只使用标准库学习go更好。是的,如果我理解正确,使用指针将使您更容易“就地”修改结构。我认为尽可能多地使用标准库和本机语言是很好的,但是在对象到关系映射的情况下,本机示例并不多,使用流行库可能会减少边缘大小写错误的可能性。好吧,太棒了,我想我明白了,非常感谢!现在我将继续使用标准库。希望一切顺利