Fellow gophers,

I'm having this dilemma of whether to embed related struct, or to have an 
ID field pointing to resource in the DB.

Say I have something like these types defined.

type Team struct{
    ID string
    Name string
}

type Organization struct {
    ID string
    Name string
}

 Now my question is which is better, more idiomatic


// 1
type Team struct{
 ID string
 Name string
 OrgID string
}


// 2
type Team struct {
 ID string
 Name string
 Organization Organization

}

Web applications I see mostly use 1, which is sensible as most of the time 
you only just need Organization ID with Team.
But sometimes you just need to include a little bit more information 
(mostly for JSON output). For that with 1 you'd have to define another type 
that include both Team and Organization.

With 2 the problem is you need to embed Organization type even if you just 
needed the ID. Also you'd have to have `json:"omitempty"` everywhere since 
you don't want empty fields in your JSON.
And that alone is not enough, some types would need to be changed to 
pointer types within the struct since `omitempty` does consider them as 
empty.

I know I could use a mix of this, but that makes it difficult to create a 
consistent API with a consistent format.

Assuming it's mostly for web applications with JSON API endpoints, how do 
you tackle this problem? 




-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to