code: func pluck(o map[string]interface{}, path string) interface{} {
  	// support dots for now ebcause thats all we need
  	parts := strings.Split(path, ".")
  
  	if len(parts) == 1 && o[parts[0]] != nil {
  		// if there is only one part, just return that property value
  		return o[parts[0]]
  	} else if len(parts) > 1 && o[parts[0]] != nil {
  		var prev map[string]interface{}
  		var ok bool
  		if prev, ok = o[parts[0]].(map[string]interface{}); !ok {
  			// not an object type! ...or a map, yeah, that.
  			return nil
  		}
  
  		for i := 1; i < len(parts)-1; i += 1 {
  			// we need to check the existence of another
  			// map[string]interface for every property along the way
  			cp := parts[i]
  
  			if prev[cp] == nil {
  				// didn't find the property, it's missing
  				return nil
  			}
  			var ok bool
  			if prev, ok = prev[cp].(map[string]interface{}); !ok {
  				return nil
  			}
  		}
  
  		if prev[parts[len(parts)-1]] != nil {
  			return prev[parts[len(parts)-1]]
  		} else {
  			return nil
  		}
  	}
  
  	return nil
  }
docs: // given a map, pull a property from it at some deeply nested depth
  // this reimplements (most of) JS `pluck` in go: https://github.com/gjohnson/pluck