I have read some of the stack overflow question related to "why pointer and why not pointer", but I could not understand much.
So, want to understand based on my example below
I have a list of users and I am finding a hard time to understand which approach is better and faster for the purpose of nesting array struct of users inside another struct.
For an example -
type loc struct {
    Type string
    Point []float64
}
type User struct {
    ID string
    Name string
    Location loc
    ... // 30 more fields
}
Case A - Using pointer for nested array struct
type Games struct {
    ID string
    Owner []*User
    Player []*User
}
// and storing it as
G:= Games{
    ID: "1",
    Owner: []*User{
        &User {
            ID: "2",
            Name: "User A",
        },
    },
}
Case B - Should I use above approach or below approach to
type Games struct {
    ID string
    Owner []User
    Player []User
}
// storing it as
G := Games {
    ID: "1",
    Owner: []User{
        {
            ID: "2",
            Name: "User A",
        },
    },
}
Considering the situation, I do not have to change data for Owner or Player after creating value for Games above and Player can sometimes remain Nil, should I use only User or it's better to use *User
I have following confusion based on above 2 cases
- Performance - which one is better & why?
- Garbage Collection - which one is better & why?
- Any Memory effects?
- Any other effects!
 
    