Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get a value from map

Tags:

go

Problem

Fetching data from map

Data Format

res = map[Event_dtmReleaseDate:2009-09-15 00:00:00 +0000 +00:00 Trans_strGuestList:<nil> strID:TSTB] 

Note

How to get the following value from the above result

  1. Event_dtmReleaseDate
  2. strID
  3. Trans_strGuestList

What i tried:

  1. res.Map("Event_dtmReleaseDate");

Error : res.Map undefined (type map[string]interface {} has no field or method Map)

  1. res.Event_dtmReleaseDate;

Error: v.id undefined (type map[string]interface {} has no field or method id)

like image 642
karthick Avatar asked Dec 18 '14 11:12

karthick


People also ask

How do I extract a value from a map?

HashMap get() Method in Java HashMap. get() method of HashMap class is used to retrieve or fetch the value mapped by a particular key mentioned in the parameter. It returns NULL when the map contains no such mapping for the key.

How do you get a key value pair on a map?

To get the key and value elements, we should call the getKey() and getValue() methods. The Map. Entry interface contains the getKey() and getValue() methods. But, we should call the entrySet() method of Map interface to get the instance of Map.

How do you find the value of an object in a string map?

Get Elements From a Java Map Map map = new HashMap(); map. put("key1", "value 1"); String element1 = (String) map. get("key1"); Notice that the get() method returns a Java Object , so we have to cast it to a String (because we know the value is a String).


1 Answers

Your variable is a map[string]interface {} which means the key is a string but the value can be anything. In general the way to access this is:

mvVar := myMap[key].(VariableType) 

Or in the case of a string value:

id  := res["strID"].(string) 

Note that this will panic if the type is not correct or the key does not exist in the map, but I suggest you read more about Go maps and type assertions.

Read about maps here: http://golang.org/doc/effective_go.html#maps

And about type assertions and interface conversions here: http://golang.org/doc/effective_go.html#interface_conversions

The safe way to do it without a chance to panic is something like this:

var id string var ok bool if x, found := res["strID"]; found {      if id, ok = x.(string); !ok {         //do whatever you want to handle errors - this means this wasn't a string      } } else {    //handle error - the map didn't contain this key } 
like image 92
Not_a_Golfer Avatar answered Sep 23 '22 05:09

Not_a_Golfer