0
votes

Suppose I have a struct named Test,

type Test struct {
    Value1 int `json:"value1"`
    Value2 int `json:"Value2"`
    People map[string]string `json:"Value3"`
    Timeupdate string `json:"Timeupdate"`
}

and people variable is a collection of key value pairs. How can I define and access people inside the struct?

var object = Test{Value1: arg1, Value2: arg2, People: args3, Timeupdate: time.Now().String()}

how can I define and access people inside this object?

1
Is the small p (people instead of People) intentional? This makes that the field is not accessible outside the package where Test is defined and will not be parsed from json. I suspect that is the root cause of this question because there is nothing special about accessing maps inside structs (object.people["key"] would work just fine). - Vincent van der Weele
That wasn't intentional (Thanks for reminding). I need clarification while declaring object what should be args3 (i.e how to define People inside object)? @VincentvanderWeele - Ukiyo
@AshwinSekhari args3 should be map[string]string, same as People field's type. Is your question on how to initiliaze a map? - mkopriva
@mkopriva Yes can you give an example how to initialize a map inside the object? - Ukiyo
@AshwinSekhari Just like you would do it outside of an object. make(map[string]string) or map[string]string{}. - mkopriva

1 Answers

1
votes

You could initialize an empty map:

args3 := map[string]string{}

Or a map with values:

args3 := map[string]string{"jane": "Jane"}

You can assign values later directly:

args3["john"] = "john"

Or after initializing object:

var object = Test{Value1: arg1, Value2: arg2, People: args3, Timeupdate: time.Now().String()}
object.People["claire"] = "Claire"